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))
以上是书上第三章的内容。
虽然好像实现了一整个流程,但许多细节和技巧都没有用上。
以上为全部内容■■■