PythonStudy6

一、数据处理

继之前的任务, 这里通过用图表的形式判断并将各个属性的离群点舍去.

发现 PERM 属性出现下图分布

del_index = []
for col in range(len(data_test[2])):
    if data_test[2][col] > 2.5:
        del_index.append(col)
data_test = np.delete(data_test, del_index, axis = 1)
label = np.delete(label, del_index)

对于 PERM 属性舍去大于 2.5 的样本

同理对剩余属性进行处理

del_index = []
for col in range(len(data_test[8])):
    if data_test[8][col] > 200:
        del_index.append(col)
data_test = np.delete(data_test, del_index, axis = 1)
label = np.delete(label, del_index)

对于 RT 属性舍去大于 200 的样本

del_index = []
for col in range(len(data_test[10])):
    if data_test[10][col] > 20:
        del_index.append(col)
data_test = np.delete(data_test, del_index, axis = 1)
label = np.delete(label, del_index)

对于 C2 属性舍去大于 20 的样本

以此类推对所有属性进行处理. 但是我在这里有个想法, 为什么不对每类的属性进行处理呢?看起来有点故意为之的感觉, 实在不行再考虑这样处理吧.

二、算法测试

在使用一般的分类算法之前, 这里了解到还可以通过随机森林算法进行分类.

from sklearn.ensemble import RandomForestClassifier

sklearn_rf_clf = RandomForestClassifier()

sklearn_rf_clf.fit(feature_train_set,label_train_set)

sklearn_rf_clf.score(feature_test_set,label_test_set)

运行截图

随机森林进行交叉验证

from sklearn.model_selection import cross_val_score

score = cross_val_score(sklearn_rf_clf,feature_train_set, label_train_set, cv=3,n_jobs=1)
print("CV accuacy score:%s" % score)
print("CV accuacy mean score:%.3f" % np.mean(score))

运行截图

这里可以看见识别率比之前使用过的算法有所提升.

但是数据处理之后对识别率提升没有很明显变化, 以 100 次 KNN 平均识别率为例.

from sklearn.neighbors import KNeighborsClassifier

sklearn_knn_clf = KNeighborsClassifier(n_neighbors=7)

sklearn_knn_clf.fit(feature_train_set,label_train_set)

score = 0

for i in range(100):
    score += sklearn_knn_clf.score(feature_test_set,label_test_set)

print(score/100)

数据处理前进行 100 次 KNN 的平均识别率

数据处理后进行 100 次 KNN 的平均识别率

很奇怪的是, 处理数据后识别率反而下降了. 看来相比起处理数据, 算法才是主导. 或许也只是自己的数据处理有问题.

看一下样本不同分类的个数, 观察是不是出现了分布不均.

import numpy as np

for i in range(3):
	print('label = ',i)
	print(np.sum(label==i))

运行截图

看样子没有分布不均. 但是相比那些数据集, 这个数据集的大小就小得多了. 是否可以考虑对训练集和测试集的划分进行修改?这点不用担心, 库中的函数考虑到了这个问题, 它是分别对每类用固定比例进行划分.

三、总结

只剩下神经网络没有使用, 或者还有其他的算法. 还是更想对数据分析更透彻一些. 为了结果而做一些工作虽然看起来很不错, 但自己总感觉是 “为赋新词强说愁”.

看一些博客了解到相关性这个东西, 说不定会对分类有所效果.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值