答案仅供参考

1.数据预处理
给定数据集datingTest

实验任务:

读取DatingTest的数据文件,

(1)并输出第一列数据的最大、最小和均值

(2)输出该文件有多少数据

(3)计算第一条数据和第二条数据的欧式距离。

import pandas as pdprint("读取文件")df=pd.read_csv('datingTestSet.txt',sep='\t',header=None,names=['x','y','z','s'])print(df)x=df['x']print("1.第一列的最大值,最小值,均值")print(x.max())print(x.min())print(x.mean())print("2.文件有多少条数据")print(len(df))x1=df['x'][0]x2=df['x'][1]y1=df['y'][0]y2=df['y'][1]z1=df['z'][0]z2=df['z'][1]print("3.第一条数据第二条数据的欧氏距离")sum=math.sqrt(math.pow(x2-x1,2)+math.pow(y1-y2,2)+math.pow(z2-z1,2))print(sum)


2.数据清理
(1)对DatingTestSet分别进行最大最小标准化,和Z-socre标准化。

(2)计算第一行数据和每行数据的欧式距离

(3)以数据的行数为横坐标,以(2)计算的距离为纵坐标,画出每行数据和第一条数据的距离散点图。

from sklearn import preprocessingimport pandas as pdimport numpy as npfrom matplotlib import pyplot as pltprint("读取文件:")df=pd.read_csv('datingTestSet.txt',sep='\t',header=None,names=['x','y','z','s'])print(df)print("最大最小标准化:")print("系统")x=df.valuesscaler=preprocessing.MinMaxScaler()x=np.delete(x,3,axis=1)print(x)print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")scaler.fit(x)x=scaler.transform(x)print(x)print("自己")data=pd.read_table('datingTestSet.txt',sep='\t',header=None)tablen=data.iloc[:,:3]themax=(tablen-tablen.min())/(tablen.max()-tablen.min())print(themax)print("Z-socre标准化:")print("系统")x=df.valuesscaler=preprocessing.StandardScaler()x=np.delete(x,3,axis=1)print(x)print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")scaler.fit(x)x=scaler.transform(x)print(x)print("自己")thesocre=(tablen-tablen.mean())/(tablen.std())print(thesocre)print("计算第一行数据和每行数据的欧式距离")dis=[]x=df.valuesx=np.delete(x,3,axis=1)for i in range(len(x)):distance=np.sqrt(np.sum(np.square(x[i]-x[0])))dis.append(distance)print(dis)index=np.argsort(dis)print(index[1])print("离散图:")x=np.arange(0,1000)y=np.array(dis)[x]plt.title("t")plt.xlabel("x")plt.ylabel("y")plt.plot(x,y,"ob")plt.show()






3.KNN
1、生成模拟数据集(可以生成多个特征)

2、定义KNN模型(可以采用欧式距离或者曼哈顿距离)

3、给定待预测的对象,能够进行分类

import numpy as npimport pandas as pd#生成模拟数据data =np.random.randint(1,100,size=60)data=pd.DataFrame(data.reshape((30,2)))x=data.valuesy=np.random.randint(1,4,size=30)#定义KNN模型def classify(inx,dataSet,labels,k):diffMat=dataSet-inxsqDiffMat=np.square(diffMat)sqDistances=np.sum(sqDiffMat,axis=1)distances =np.sqrt(sqDistances)sortedDistindicies=distances.argsort()classCount={}for i in range(k):voteLabel=labels[sortedDistindicies[i]]classCount[voteLabel]=classCount.get(voteLabel,0)+1sortedClassCount=sorted(classCount.items(),key=lambda x:x[1],reverse=True)return sortedClassCount[0][0]#给出预测对象,进行分类print(classify([1,1],x,y,3))print(classify([20,35],x,y,3))print(classify([2,35],x,y,3))print(classify([20,90],x,y,3))print(classify([99,70],x,y,3))

4.KNN回归分析
(1)用sklearn数据集中有波士顿房价数据集,具体参考:

https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html

该数据集共506条给出了每个房子的13种特征,及房子对应的价格。测试数据比例设置为0.1,请采用KNN回归预测测试集房子的价格,并计算其均方误差.

(2)分析sklearn数据集diabetes,输出糖尿病数据集的样本数、特征数、将测试数据比例设为0.1,采用KNN回归模型进行预测,并计算其均方误差

要求:

(1)调用sklearn模型进行数据集的划分和数据的预测

(2)调用.DESCR属性输出有关数据集的描述,并显示前条数据

(3)利用测试集数据计算模型预测的均方误差

(4)上传源代码及截图

from sklearn.neighbors import KNeighborsClassifierfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_errorfrom sklearn import metricsfrom sklearn.metrics import classification_reportboston=datasets.load_boston()print(boston.data.shape)x=boston.datay=boston.targetX_train,X_test,y_train,y_test=train_test_split(x,y,test_size=0.1,random_state=42)knn=KNeighborsClassifier()knn.fit(X_train, y_train.astype('int'))predict=knn.predict(X_test)print("预测价格")print(predict)print("真实价格")print(y_test)print("均方误差")print(mean_squared_error(y_test,predict))

from sklearn.neighbors import KNeighborsClassifierfrom sklearn import datasetsfrom sklearn.model_selection import train_test_split#from sklearn.metrics import mean_squared_errorfrom sklearn import metricsdiabetes=datasets.load_diabetes()print("数据集描述")print(diabetes.DESCR)print("样本数,特征数")print(diabetes.data.shape)print("前10个数据显示")print(diabetes.data[:10])x=diabetes.datay=diabetes.targetX_train,X_test,y_train,y_test=train_test_split(x,y,test_size=0.1,random_state=42)knn=KNeighborsClassifier()knn.fit(X_train,y_train)predict=knn.predict(X_test)print("预测价格")print(predict)print("真实价格")print(y_test)print("均方误差")print(mean_squared_error(y_test,predict))



5.朴素贝叶斯实验
用决策树模型与朴素贝叶斯对DatingTestSet数据集建模,测试数据比例设置为0.2,并与KNN分类的结果进行比较。

import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.naive_bayes import BernoulliNBfrom sklearn import metricsfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.preprocessing import LabelEncoderprint("读取文件:")df=pd.read_csv('datingTestSet.txt',sep='\t',header=None,names=['x','y','z','s'])print(df)data=df.valuesX=data[:,:3]y=data[:,-1]X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=4,test_size=0.2)print("朴素贝叶斯")nb=BernoulliNB()nb.fit(X_train,y_train)y_pred=nb.predict(X_test)acc1=metrics.accuracy_score(y_pred=y_pred,y_true=y_test)print(acc1)print("knn")knn=KNeighborsClassifier()knn.fit(X_train,y_train)pred=knn.predict(X_test)acc2=metrics.accuracy_score(y_pred=pred,y_true=y_test)print(acc2)print("决策树")dcr=DecisionTreeClassifier()dcr.fit(X_train,y_train)y_predict=clf.predict(X_test)acc3=metrics.accuracy_score(y_pred=y_predict,y_true=y_test)print(acc3)

6.线性回归模型
用sklearn数据集中有波士顿房价数据集,具体参考:

该数据集共506条给出了每个房子的13种特征,及房子对应的价格。测试数据比例设置为0.2

要求:

(1)调用sklearn模型进行数据集的划分和数据的预测

(2)调用.DESCR属性输出有关数据集的描述,并显示前条数据

(3)采用KNN回归模型预测房子价格,计算R2系数

(4)采用线性回归模型预测房子价格,计算R2系数

(5)采用决策树回归模型预测房屋价格,计算R2系数

(6)对比分析R2值的不同,试着尝试选定数据中几个特征再对房屋价格进行预测,并分析R2系数

(6)上传源代码及截图

from sklearn.neighbors import KNeighborsRegressorfrom sklearn.linear_model import LinearRegressionfrom sklearn.tree import DecisionTreeRegressorfrom sklearn.model_selection import train_test_splitfrom sklearn import metricsfrom sklearn import datasetsboston=datasets.load_boston()X=boston.datay=boston.targettrain_X,test_X,train_y,test_y=train_test_split(X,y,test_size=0.2,random_state=1)print("数据集描述")print(boston.DESCR)print("显示前五条数据")print(boston.data[:5])print("KNN:")knn=KNeighborsRegressor()knn.fit(train_X,train_y)pre_y=knn.predict(test_X)print("第一条测试数据的预测输出:",pred_y[0],"真实值",test_y[50])score_test=metrics.r2_score(test_y,pre_y)print("KNN测试数据集R2:",score_test)print("线性回归:")Ir=LinearRegression()Ir.fit(train_X,train_y)pred_y=Ir.predict(test_X)print("第一条测试数据的预测输出:",pred_y[0],"真实值",test_y[50])score_test=metrics.r2_score(test_y,pred_y)print("线性回归测试数据集R2:",score_test)print("决策树:")dcr=DecisionTreeRegressor()dcr.fit(train_X,train_y)pred_y=dcr.predict(test_X)print("第一条测试数据的预测输出:",pred_y[0],"真实值",test_y[50])score_test=metrics.r2_score(test_y,pred_y)print("决策树测试数据集R2:",score_test)print("选定数据中4个特征再预测:")X=X[:,:4]print("knn:")train_X,test_X,train_y,test_y=train_test_split(X,y,test_size=0.2,random_state=1)knn=KNeighborsRegressor()knn.fit(train_X,train_y)pre_y=knn.predict(test_X)print("第一条测试数据的预测输出:",pred_y[0],"真实值",test_y[50])score_test=metrics.r2_score(test_y,pre_y)print("KNN测试数据集R2:",score_test)print("线性回归:")Ir=LinearRegression()Ir.fit(train_X,train_y)pred_y=Ir.predict(test_X)print("第一条测试数据的预测输出:",pred_y[0],"真实值",test_y[50])score_test=metrics.r2_score(test_y,pred_y)print("线性回归测试数据集R2:",score_test)print("决策树:")dcr=DecisionTreeRegressor()dcr.fit(train_X,train_y)pred_y=dcr.predict(test_X)print("第一条测试数据的预测输出:",pred_y[0],"真实值",test_y[50])score_test=metrics.r2_score(test_y,pred_y)print("决策树测试数据集R2:",score_test)




7.决策树和随机森林
用sklearn数据集中有书写数字数据集进行分类学习。测试数据比例设置为0.2

要求:

(1)调用sklearn模型进行数据集的划分和数据的预测

(2)调用.DESCR属性输出有关数据集的描述,并显示前条数据

(3)采用KNN分类模型进行手写数字分类,计算分类准确率

(4)采用贝叶斯分类模型进行手写数字分类,计算分类准确率

(5)采用决策树模型进行手写数字分类,计算分类准确率

(6)采用随机森林进行手写数字分类,计算分类准确率

(7)采用逻辑回归进行手写数字分类,计算分类准确率。

(6)对比分析不同分类器的准确率值的不同,试着尝试改变模型的参数观察其对分类准确率的影响

(6)上传源代码及截图

from sklearn.neighbors import KNeighborsClassifierfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.tree import DecisionTreeRegressorfrom sklearn.linear_model import LogisticRegressionfrom sklearn import naive_bayesfrom sklearn.model_selection import train_test_splitfrom sklearn import metricsfrom sklearn import datasetsimport warningswarnings.filterwarnings("ignore")digits=datasets.load_digits()X=digits.datay=digits.targettrain_X,test_X,train_y,test_y=train_test_split(X,y,test_size=0.2,random_state=1)print(digits.DESCR)print(digits.data[:5])knn=KNeighborsRegressor()knn.fit(train_X,train_y)knn_score=knn.score(test_X,test_y)print("KNN:",knn_score)nb=naive_bayes.BernoulliNB()nb.fit(train_X,train_y)nb_score=nb.score(test_X,test_y)print("贝叶斯:",nb_score)dcr=DecisionTreeRegressor()dcr.fit(train_X,train_y)dcr_score=dcr.score(test_X,test_y)print("决策树:",dcr_score)rf=RandomForestClassifier(n_estimators=100,criterion="entropy",n_jobs=4,oob_score=True)rf.fit(train_X,train_y)rf_score=rf.score(test_X,test_y)print("随机森林:",rf_score)lr=LogisticRegression()lr.fit(train_X,train_y)lr_score=lr.score(test_X,test_y)print("逻辑回归:",lr_score)print("改变模型参数")train_X,test_X,train_y,test_y=train_test_split(X,y,test_size=0.2,random_state=4)knn=KNeighborsRegressor()knn.fit(train_X,train_y)knn_score=knn.score(test_X,test_y)print("KNN:",knn_score)nb=naive_bayes.BernoulliNB()nb.fit(train_X,train_y)nb_score=nb.score(test_X,test_y)print("贝叶斯:",nb_score)dcr=DecisionTreeRegressor()dcr.fit(train_X,train_y)dcr_score=dcr.score(test_X,test_y)print("决策树:",dcr_score)rf=RandomForestClassifier(n_estimators=50,criterion="entropy",n_jobs=4,oob_score=True)rf.fit(train_X,train_y)rf_score=rf.score(test_X,test_y)print("随机森林:",rf_score)lr=LogisticRegression()lr.fit(train_X,train_y)lr_score=lr.score(test_X,test_y)print("逻辑回归:",lr_score)



8.kmeans
使用make_blobs函数生成样本大小是500的数据点,选用不同的参数进行聚类分析,同时改变random_state的值,通过数据可视化观察数据的分布,并采用kmeans算法设定不同的K值观察聚类后的结果,并输出聚类中心。

from sklearn.datasets import make_blobsX,y=make_blobs(n_samples=500,centers=3,random_state=10)import matplotlib.pyplot as pltplt.scatter(X[:,0],X[:,1],cmap=plt.cm.cool,s=60,edgecolors='y')plt.show()from sklearn.cluster import KMeanskmeans=KMeans(n_clusters=3,random_state=10)y_pred=kmeans.fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()print("聚类中心:")print(kmeans.cluster_centers_)


from sklearn.datasets import make_blobsX,y=make_blobs(n_samples=500,centers=4,random_state=1)import matplotlib.pyplot as pltplt.scatter(X[:,0],X[:,1],cmap=plt.cm.cool,s=60,edgecolors='y')plt.show()print("改变K值为4:")from sklearn.cluster import KMeanskmeans=KMeans(n_clusters=4,random_state=100)y_pred=kmeans.fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()print("聚类中心:")print(kmeans.cluster_centers_)


人工智能 机器学习实验总结相关推荐

  1. Azure机器学习实验

    实验背景 [实验简介] Azure Machine Learning(简称"AML")是微软在其公有云Azure上推出的基于Web使用的一项机器学习服务,机器学习属人工智能的一个分 ...

  2. 现在忘掉Sklearn吧,来自己手写一个人工智能线性回归,人工智能学习实验----01

    人工智能学习实验----01 本文是我的第一次人工智能学习的实验的操作,还请多多包涵. 现在忘掉Sklearn吧,来自己手写一个人工智能线性回归吧!!!-人工智能学习实验----01 模块化的编程固然 ...

  3. TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书

    作者:蒋子阳 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2019-01-01 TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书 ISBN:97875170682 ...

  4. 2019年上半年收集到的人工智能机器学习方向干货文章

    2019年上半年收集到的人工智能机器学习方向干货文章 10种机器学习方法,掌握了就可以称霸朋友圈 人工智能常见算法简介 机器学习中的最优化算法总结 最萌算法学习来啦,看不懂才怪! The Next S ...

  5. 图解人工智能机器学习深度学习的关系和区别

    图解人工智能机器学习深度学习的关系和区别,先直观看下图的关系: AI(Artificial Intelligence.人工智能).机器学习(machine learning).深度学习(Deep le ...

  6. 灵宝机器人编程学校_灵宝两所学校上榜“河南省中小学人工智能教育实验学校”...

    点击上方蓝字"灵宝百事通"免费加入 11月1日至3日,在河南省中小学人工智能教育高峰论坛上,省教育厅公布"河南省中小学人工智能教育实验学校"名单并授牌,灵宝市第 ...

  7. 机器学习实验中的编程技术(part3)--numpy

    学习笔记,仅供参考,有错必纠 文章目录 机器学习实验中的编程技术 numpy中的逻辑运算 numpy中的指数及对数 numpy中的集合操作 取唯一 检测数组中是否包含某些元素 集合的交,并,差,异或 ...

  8. 机器学习实验中的编程技术(part2)--numpy

    学习笔记,仅供参考,有错必纠 文章目录 机器学习实验中的编程技术 numpy中的数据截断 四舍五入 其他 numpy中的和 积 差 梯度 机器学习实验中的编程技术 numpy中的数据截断 四舍五入 # ...

  9. 机器学习实验中的编程技术(part1)--numpy

    学习笔记,仅供参考,有错必纠 文章目录 机器学习实验中的编程技术 numpy中的算术运算 加法 除法 取倒数 取余 取负数 绝对值 numpy中的三角函数与反三角函数 机器学习实验中的编程技术 num ...

最新文章

  1. 2021年用于图像处理的Python顶级库
  2. 框架:简单实现Spring的IOC容器
  3. jquery validation-jquery的验证框架 详解(1)
  4. python selenium 文件上传_python-selenium -- 文件上传操作
  5. 设计模式之观察者模式(Java)
  6. 使用System Center Essentials 2007进行软件部署
  7. JavaScript动画
  8. 身份证转换工具类(Java)
  9. 【STL MAP】热血格斗场
  10. UNIAPP nvue 地图 markers 不显示
  11. Python:统计文件中所有英文单词的数量
  12. 2022年秋季期寒假总结
  13. UTM坐标系区号选择
  14. 自动化(automation)错误之野路子解决办法
  15. git bash命令
  16. Linux6/Centos6 NFS详细配置
  17. 用Engauge Digitizer软件提取文献中的数据
  18. 易中天教授讲座十句人生感悟
  19. html判断地址是否相等,如何用JS判断字符串是否相等
  20. 如何搭建密码破解服务器

热门文章

  1. 高德地图完整功能的html,揭秘高德地图八大不为人知的强大功能
  2. ios 其他 清理不了_iOS/Android都无法回避的一件事儿:是它们让手机越来越好用...
  3. ArcGIS 10 Desktop完全破解方法
  4. 机器学习(四)——Adaboost算法
  5. 告诉你SuperMap iDesktop软件怎么一步步制作地图的方法
  6. js中的强制类型转换和进制数表达
  7. 自称菜鸟的二本大龄程序员居然拿到百度offer,还有嘉实offer(百度三面面经)
  8. Datawhale数据挖掘 数据分析笔记
  9. 微信小程序获取用户头像昵称组件封装(最新版)
  10. pycharm调试服务器代码