资源描述:
《数据挖掘实训报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、项目1:基于sklearn的数据分类挖掘一、项目任务①熟悉sklearn数据挖掘的基本功能。②进行用朴素贝叶斯、KNN、决策树C4.5、SVM算法进行数据分类分析。二、项目环境及条件Øsklearn-0.18.0Øpython-2.7.13Ønumpy-1.11.3+mkl-cp27-cp27m-win_amd64Øscipy-0.19.0-cp27-cp27m-win_amd64Ømatplotlib-1.5.3-cp27-cp27m-win_amd64三、实验数据Iris数据集Iris数据集是常用的分类实验数据集,
2、由Fisher,1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。Digits数据集美国著名数据集NIST的子集,模式识别常用实验数据集,图像属于灰度图像。分辨率为8x8四、项目内容及过程1.读取数据集从sklearn中读取iris和digits数据集并测试打印fromskle
3、arnimportdatasetsiris=datasets.load_iris()digits=datasets.load_digits()print'iris:',iris.data,'digits:',digits.data打印的数据集存在numpy.ndarray中,ndarray会自动省略较长矩阵的中间部分。Iris数据集的样本数据为其花瓣的各项属性Digits数据集的样本数据为手写数字图像的像素值2.划分数据集引入sklearn的model_selection使用train_test_split划分di
4、gits数据集,训练集和测试集比例为8:2fromsklearn.model_selectionimporttrain_test_splitx_train,x_test,y_train,y_test=train_test_split(digits.data,digits.target,test_size=0.2)print'x_train:',x_train,'x_test:',x_test,'y_train:',y_train,'y_test:',y_test3.使用KNN和SVM对digits测试集分类
5、引用sklearn的svm.SVC和neighbors.KNeighborsClassifier模块调用算法,使用classification_report查看预测结果的准确率和召回率fromsklearn.metricsimportclassification_reportfromsklearnimportneighborsclf=neighbors.KNeighborsClassifier()clf.fit(x_train,y_train)y_pred=clf.predict(x_test)printclassif
6、ication_report(y_test,y_pred)fromsklearn.svmimportSVCclf=SVC()clf.fit(x_train,y_train)y_pred=clf.predict(x_test)printclassification_report(y_test,y_pred)KNN的预测结果:所有数字的预测正确率几乎达到了100%SVM的预测结果:对部分数字的预测误差较大,基本情况不如KNN考虑SVM分类器的特性,在分类前对特征值进行标准化后再分类:fromsklearnimportpre
7、processingmin_max_scaler=preprocessing.MinMaxScaler()x_train=min_max_scaler.fit_transform(x_train)x_test=min_max_scaler.fit_transform(x_test)标准化数据后SVM的预测结果达到了KNN的准度:4.使用贝叶斯和决策树对iris数据集分类fromsklearn.model_selectionimporttrain_test_splitx_train,x_test,y_train,y_te
8、st=train_test_split(iris.data,iris.target,test_size=0.4)fromsklearn.metricsimportclassification_reportfromsklearnimportnaive_bayesclf=naive_bayes.GaussianNB()clf.fit(