PY序

Python实现机器学习依赖于两个类库——SciPy和scikit-learn

一)SciPy

SciPy是数学运算的基本类库,在机器学习的过程中,主要运用NumPy、Matplotlib和Pandas三个类库。具体来说,NumPy是用来准备数据的工具,Matplotlib则用来创建图表和实现可视化,Pandas用来导入/展示/清洗/转换数据。

二)scikit-learn

scikit-learn依赖于SciPy及其相关类库来运行,其基本功能是:分类、回归、聚类、降维、模型选择和数据预处理。

但scikit-learn本身不支持深度学习和GPU加速。

可用于商业开发。且该类库非常保守,不添加机器学习以外的领域、不采用未经广泛验证的算法。

三)例子

用鸢尾花数据进行一个小项目演示机器学习的简单过程。

 1 #导入类库
 2 from pandas import read_csv
 3 from pandas.plotting import scatter_matrix
 4 from matplotlib import pyplot
 5 from sklearn.model_selection import train_test_split
 6 from sklearn.model_selection import KFold
 7 from sklearn.model_selection import cross_val_score
 8 from sklearn.metrics import classification_report
 9 from sklearn.metrics import confusion_matrix
10 from sklearn.metrics import accuracy_score
11 from sklearn.linear_model import LogisticRegression
12 from sklearn.tree import DecisionTreeClassifier
13 from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
14 from sklearn.neighbors import KNeighborsClassifier
15 from sklearn.naive_bayes import GaussianNB
16 from sklearn.svm import SVC
17 #导入数据
18 filename = 'D:/data/iris.data.csv'
19 names = ['separ-length','separ-width','petal-length','petal-width','class']
20 dataset = read_csv(filename,names=names)
21 #数据概述
22 #数据维度
23 print('行 %s, 列 %s' % dataset.shape)
24 #前十行
25 print(dataset.head(10))
26 #统计数据
27 print(dataset.describe())
28 #数据分布
29 print(dataset.groupby('class').size())
30 #单变量图表
31 dataset.plot(kind='box',subplots=True,layout=(2,2),sharex=False,sharey=False)
32 pyplot.show()
33 #直方图
34 dataset.hist()
35 pyplot.show()
36 #散点矩阵
37 scatter_matrix(dataset)
38 pyplot.show()
39 #算法评估
40 #数据集分离
41 array = dataset.values
42 X = array[:, 0:4]
43 Y = array[:, 4]
44 validation_size = 0.2
45 seed = 7
46 X_train,X_validation,Y_train,Y_validation = \
47     train_test_split(X, Y, test_size=validation_size,train_test_split(X, Y, test_size=validation_size,random_state=seed)
48 #算法审查
49 models={}
50 models['LR']=LogisticRegression()
51 models['LDA']=LinearDiscriminantAnalysis()
52 models['KNN']=KNeighborsClassifier()
53 models['CART']=DecisionTreeClassifier()
54 models['NB']=GaussianNB()
55 models['SVM']=SVC()
56 #评估算法
57 results=[]
58 for key in models:
59     kfold=KFold(n_splits=10,random_state=seed)
60     cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring='accuracy')
61     results.append(cv_results)
62     print('%s: %f (%f)' %(key,cv_results.mean(),cv_results.std()))
63 #实施预测
64 svm=SVC()
65 svm.fit(X=X_train,y=Y_train)
66 predictions=svm.predict(X_validation)
67 print(accuracy_score(Y_validation,predictions))
68 print(confusion_matrix(Y_validation,predictions))
69 print(classification_report(Y_validation,predictions))

以上是书上第三章的内容。

虽然好像实现了一整个流程,但许多细节和技巧都没有用上。

posted @ 2019-03-06 21:56  Shilo  阅读(169)  评论(0编辑  收藏  举报