数据处理有用代码:

通常做机器学习问题时,需要准备训练数据,通常会把样本数据和标签存放于2个list中,比如train_x = [x1,x2,…,xN][x1,x2,…,xN],train_y = [y1,y2,…,yN][y1,y2,…,yN]. 有时候是需要将数据shuffle后再做处理的(比如,批量梯度下降算法,需要数据是打乱的)。这时就需要以相同的顺序打乱两个list,那么在python中如何实现呢?可以通过设置相同的随机种子,再shuffle的方式来实现。代码如下:

import random

randnum = random.randint(0,100)
random.seed(randnum)
random.shuffle(train_x)
random.seed(randnum)
random.shuffle(train_y)

查找列表中某元素全部坐标:
Num_locastion = [i for i,x in enumerate(Y) if x == num]

通过映射有比例的减少数据集:
def Test(num):
sample = np.random.choice(range(70000),int(70000*num),replace=False)
for z in range(len(sample)):
X_data.append(X[sample[z]])
Y_data.append(Y[sample[z]])
X_train, X_test, y_train, y_test = train_test_split(X_data, Y_data, test_size=0.30)
score1,score2 = SVC_Kernel(X_train, X_test, y_train, y_test)

有效的画图工具
x_tmp = [0,1,2,3]
y_score1 = [SCORE[0,0], SCORE[1,0], SCORE[2,0], SCORE[3,0]]
y_score2 = [SCORE[0,1], SCORE[1,1], SCORE[2,1], SCORE[3,1]]

plt.figure(facecolor=‘w’, figsize=(12,6))

plt.subplot(121)
plt.plot(x_tmp, y_score1, ‘r-’, lw=2, label=u’Training_Accuracy’)
plt.plot(x_tmp, y_score2, ‘g-’, lw=2, label=u’Testing_Accuracy’)
plt.xlim(-0.3, 3.3)
plt.ylim(np.min((np.min(y_score1), np.min(y_score2)))*0.9,
np.max((np.max(y_score1), np.max(y_score2)))*1.1)
plt.legend(loc = ‘lower left’)
plt.title(u’Model_Accuracy’, fontsize=13)
plt.xticks(x_tmp, [u’Size_10%’, u’Size_30%’, u’Size_60%’, u’Size_70%’], rotation=0)
plt.grid(b=True)

plt.suptitle(u’Comparsion of different data size to SVM’, fontsize=16)
plt.show()

猜你喜欢

转载自blog.csdn.net/weixin_37721058/article/details/89086023