一、前言
本文利用 Python 的第三方库来对一个没有经过任何处理的 excel
表格进行处理
并对处理后的数据采用 KNN 算法来实现分类.
二、流程展示
1. 获取数据
由于数据文件敏感就不此展示.
简要描述一下所需要做的工作就是截取一部分列作为新的数据源, 在 excel
文件最后一列表示的是不同的分类.
这里我采用了第三方库 Pandas 通过暴力列举在表格中需要的列,
然后就有这样的代码.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import pandas as pd
data = pd.read_excel("./test.xlsx", usecols=[5,6,7,8,9,10,11,12,13,14,15,16,27],names=None) df = data.values.tolist() feature = [] label = []
for i in range(len(df)): feature.append(df[i][:-1])
if df[i][-1] == "差气层": label.append(0) elif df[i][-1] == "干层": label.append(1) elif df[i][-1] == "气层": label.append(2) else: label.append(3)
print(feature)
print(label)
|
运行截图

2. 划分训练集和测试集
利用 sklearn 第三方库中的 train_test_split
类很轻松的就将已有数据划分出了训练集和测试集, 它们两个之间的比例是
3:1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| from sklearn.model_selection import train_test_split
feature_train_set,feature_test_set,label_train_set,label_test_set = train_test_split(feature,label)
print("feature_train_set:") print( feature_train_set)
print("feature_test_set:") print( feature_test_set)
print("label_train_set:") print( label_train_set)
print("label_test_set:") print( label_test_set)
|
运行截图

3. 创建分类器分类并进行测试
1 2 3 4 5 6 7
| from sklearn.neighbors import KNeighborsClassifier
sklearn_knn_clf = KNeighborsClassifier(n_neighbors = 3)
sklearn_knn_clf.fit(feature_train_set,label_train_set)
sklearn_knn_clf.score(feature_test_set,label_test_set)
|
运行截图

三、总结
整体来说用第三方库来写代码很舒服,
但是是不是这样就能高枕无忧了呢?
答案当然不是, 这只是用来寻找思路的方法. 要有创新就要自己完成代码,
有些基础性的工作可以用第三方库替代, 但是算法万万不能,
出了出了错连问题都定位不了.
然后就是多次测试后能够得出最高的分类率了, 66.6%
这个貌似太低了一些.
问题可能有两种, 一是数据集的个数太少, 二是没有找到关联性强的特征数据.
第一个的解决方法可以综合多个文件来完成,
第二个就只有以结果为导向不断修改数据集中所需的数据.