scikit-learn库实现了一系列的数据挖掘,提供通用的编程接口、标准化的测试和调参工具
python
主要包含:算法
估计器:用于聚类、回归、分类分析编程
转化器:用于数据的预处理和数据抓换数组
流水线:组合数据挖掘的流程,便于再次使用网络
估计器:为了实现大量的分类算法,该库把相关功能封装成所谓的估计器,主要包括两个函数:app
fit():训练算法,设置内部参数。接受训练集和类别这两个参数
dom
predict():参数为测试集,预测测试机的类别,而且返回一个测试集识别后级别的数组函数
大多scikit-learn库接受和输出的数据格式都为numpy 的数组格式工具
scikit-learn库提供了不少估计器,例如随机森林,svm,神经网络测试
近邻算法:
距离测度方法:
欧式距离:两个特征响亮的长度平方和的平方根
曼哈顿距离
余弦距离
# -*- coding: utf-8 -*-"""Created on Thu Mar 2 21:43:06 2017@author: zzpp220"""from pandas import DataFrame,Seriesimport pandas as pdimport numpy as npimport os,csvfrom sklearn.cross_validation import train_test_splitfrom sklearn.cross_validation import cross_val_score#交叉验证from matplotlib import pyplot as pltdata_folder='/media/zzpp220/Data/Linux_Documents/DOWNLOAD/python-DataAnalysis/xianku_book'data=os.path.join(data_folder,'ionosphere.data')#csv --comma-seperated-valuesX=np.zeros((351,34),dtype='float')y=np.zeros((351,),dtype='bool')with open(data,'r') as input: reader=csv.reader(input)# X=np.array([]) for i ,row in enumerate(reader): data=[float(datum) for datum in row[:-1]] X[i]=data#读数据至数组X y[i]=row[-1]=='g'#读类别值数组y ## set train_set and test_set X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=14) ##导入k近邻分类器,并为其初始化一个实例,参数用默认的,之后再讲调参,该算法默认选择5个近邻做为分类一句 from sklearn.neighbors import KNeighborsClassifier estimator=KNeighborsClassifier()# 创建实例 #估计器建立号以后,就要用进行数据训练, #k近邻估计器分析训练集中 的数据,比较待分类的新数据点和训练集中的数据,找到新数据点的 近邻 estimator.fit(X_train,y_train) #用测试集测试孙发,【评估在测试集上的表现 y_predicted=estimator.predict(X_test) accuracy=np.mean(y_test==y_predicted)*100 print 'the accuracy is {0:.1f}%'.format(accuracy) scores=cross_val_score(estimator,X,y,scoring='accuracy') average_accuracy=np.mean(scores)*100 print 'the accuracy is {0:.1f}%'.format(average_accuracy) ##调参优化结果 #k近邻算法有多个参数,最终药店 是初始紧邻点的选择,想测试一系列的紧邻点的值,能够进行屡次实验 avg_Scores,all_score=[],[] parameter_values=range(1,21) for num_neighbor in parameter_values: multi_test_estimator=KNeighborsClassifier(n_neighbors=num_neighbor) multi_testscore=cross_val_score(multi_test_estimator,X,y,scoring='accuracy') all_score.append(multi_testscore) avg_Scores.append(np.mean(multi_testscore)) plt.plot(parameter_values,avg_Scores,'-o')#画图,横坐标,纵坐标,点的标志 plt.savefig('knn-multi-neighbor-test.pdf',dpi=400,bbox_inchs='tight')#保存成pdf格式,后面是像素和白边的设置