当前位置:   article > 正文

scikit-learn构建模型_构建基于wine数据集的svm分类模型。 (1)读取wine数据集,区分标签和数据。 (2)将wi

构建基于wine数据集的svm分类模型。 (1)读取wine数据集,区分标签和数据。 (2)将wi

1、使用 sklearn处理wine和wine_quality数据集

(1)训练要点:

  1. 掌握sklearn转换器的用法
  2. 掌握训练集、测试集划分的方法
  3. 掌握使用sklearn进行PCA降维的方法

(2)需求说明:

wine数据集和 wine_quality数据集是两份和酒有关的数据集。wine数据集包含3种

同起源的葡萄酒的记录,共178条。其中,每个特征对应葡萄酒的每种化学成分,并且都属于连续型数据。通过化学分析可以推断葡萄酒的起源。

wine_quality数据集共有4898个观察值,11个输入特征和一个标签。其中,不同类的

观察值数量不等,所有特征为连续型数据。通过酒的各类化学成分,预测该葡萄酒的评分。

  1. 实现思路及步骤:
  1. 使用pandas库分别读取wine数据集和 winquality数据集
  2. 将wine数据集和winequality数据集的数据和标签拆分开
  3. 将winequality数据集划分为训练集和测试集
  4. 标准化wine数据集和 wine quality数据集
  5. 对wine数据集和 winequality数据集进行PCA降维

  1. 构建基于wine数据集的k- Means聚类模型
  1. 训练要点:
    1. 了解sklearn估计器的用法
    2. 掌握聚类模型的构建方法
    3. 掌握聚类模型的评价方法

需求说明:wine数据集的葡萄酒总共分为3种,通过将wine数据集的数据进行聚类,聚集为3个簇,能够实现葡萄酒的类别划分。

  1. 实现思路及步骤:
  1. 根据实验1的wine数据集处理的结果,构建聚类数目为3的K-Means模型
  2. 对比真实标签和聚类标签求取FMI
  3. 在聚类数目为2~10类时,确定最优聚类数目
  4. 求取模型的轮廓系数,绘制轮廓系数折线图,确定最优聚类数目
  5. 求取Calinski-Harabasz指数,确定最优聚类数目

  1. 构建基于wine数据集的SVM分类模型
  1. 训练要点:
  1. 掌握sklearn估计器的用法
  2. 掌握分类模型的构建方法
  3. 掌握分类模型的评价方法
  1. 需求说明:wine数据集中的葡萄酒类别为3种,将wine数据集划分为训练集和测试集,使用训练集训练SVM分类模型,并使用训练完成的模型预测测试集的葡萄酒类别归属。
  2. 实现思路及步骤:
  1. 读取wine数据集,区分标签和数据
  2. 将wine数据集划分为训练集和测试集
  3. 使用离差标准化方法标准化wine数据集
  4. 构建SVM模型,并预测测试集结果
  5. 打印出分类报告,评价分类模型性能

  1. 构建基于wine_quality数据集的回归模型
    1. 训练要点:
  1. 熟练sklearn估计器的用法
  2. 掌握回归模型的构建方法
  3. 掌握回归模型的评价方法
    1. 需求说明:wine_quality数据集的葡萄酒评分在1~10之间,建线性回归模型与梯度提升回归模型,训练wine_quality数据集的训练集数据,训练完成后预测测试集的葡萄酒评分。结合真实评分,评价构建的两个回归模型的好坏。
    2. 实现思路及步骤:
  1. 根据winequality数据集处理的结果,构建线性回归模型
  2. 根据wine quality数据集处理的结果,构建梯度提升回归模型
  3. 结合真实评分和预测评分,计算均方误差中值绝对误差、可解释方差值
  4. 根据得分,判定模型的性能优劣

答:

  1. ##使用sklearn处理wine和wine_quality数据集
  2. import pandas as pd
  3. #1、读取数据集
  4. wine = pd.read_csv('./第六章 实验数据/实训数据/wine.csv')
  5. #winequality = pd.read_csv('./第六章 实验数据test/实训数据/winequality.csv')
  6. winequality = pd.read_csv('./第六章 实验数据/实训数据/winequality.csv',sep = ';')
  7. #2、数据和标签拆分开
  8. wine_data=wine.iloc[:,1:]
  9. wine_target=wine['Class']
  10. winequality_data=winequality.iloc[:,:-1]
  11. winequality_target=winequality['quality']
  12. #winequality_target=winequality.iloc[:,-1]
  13. #3、划分训练集和测试集
  14. from sklearn.model_selection import train_test_split
  15. wine_data_train, wine_data_test, \
  16. wine_target_train, wine_target_test = \
  17. train_test_split(wine_data, wine_target, \
  18. test_size=0.1, random_state=6)
  19. winequality_data_train, winequality_data_test, \
  20. winequality_target_train, winequality_target_test = \
  21. train_test_split(winequality_data, winequality_target, \
  22. test_size=0.1, random_state=6)
  23. #4、标准化数据集
  24. from sklearn.preprocessing import StandardScaler #标准差标准化
  25. stdScale = StandardScaler().fit(wine_data_train) #生成规则(建模)
  26. wine_trainScaler = stdScale.transform(wine_data_train)#对训练集进行标准化
  27. wine_testScaler = stdScale.transform(wine_data_test)#用训练集训练的模型对测试集标准化
  28. stdScale = StandardScaler().fit(winequality_data_train)
  29. winequality_trainScaler = stdScale.transform(winequality_data_train)
  30. winequality_testScaler = stdScale.transform(winequality_data_test)
  31. #5、PCA降维
  32. from sklearn.decomposition import PCA
  33. pca = PCA(n_components=5).fit(wine_trainScaler)
  34. wine_trainPca = pca.transform(wine_trainScaler)
  35. wine_testPca = pca.transform(wine_testScaler)
  36. pca = PCA(n_components=5).fit(winequality_trainScaler)
  37. winequality_trainPca = pca.transform(winequality_trainScaler)
  38. winequality_testPca = pca.transform(winequality_testScaler)

2、答

  1. #实训2:构建基于wine数据集的K-Means聚类模型
  2. #从实训2开始需要基于前面的数据处理部分
  3. #1、根据实训1的wine数据集处理的结果,构建聚类数目为3的 K-Means模型
  4. from sklearn.cluster import KMeans
  5. #用标准化后的训练集建模
  6. kmeans = KMeans(n_clusters = 3,random_state=1).fit(wine_trainScaler)
  7. #用标准化后PCA降维后的训练集建模(采用降维后的数据聚类效果不好,故此处不采用)
  8. #kmeans = KMeans(n_clusters = 3,random_state=1).fit(wine_trainPca)
  9. print('构建的KMeans模型为:\n',kmeans)
  10. #2、对比真实标签和聚类标签求取FMI
  11. from sklearn.metrics import fowlkes_mallows_score #FMI评价法
  12. score=fowlkes_mallows_score(wine_target_train,kmeans.labels_)
  13. print("wine数据集的FMI:%f"%(score))
  14. #3、在聚类数目为2~10类时,确定最优聚类数目
  15. for i in range(2,11):
  16. ##构建并训练模型
  17. kmeans = KMeans(n_clusters = i,random_state=123).fit(wine_trainScaler)
  18. score = fowlkes_mallows_score(wine_target_train,kmeans.labels_)
  19. print('iris数据聚%d类FMI评价分值为:%f' %(i,score))
  20. #4、求取模型的轮廓系数,绘制轮廓系数折线图,确定最优聚类数目
  21. from sklearn.metrics import silhouette_score
  22. import matplotlib.pyplot as plt
  23. silhouettteScore = []
  24. for i in range(2,11):
  25. ##构建并训练模型
  26. kmeans = KMeans(n_clusters = i,random_state=1).fit(wine)
  27. score = silhouette_score(wine,kmeans.labels_)
  28. silhouettteScore.append(score)
  29. plt.figure(figsize=(10,6))
  30. plt.plot(range(2,11),silhouettteScore,linewidth=1.5, linestyle="-")
  31. plt.show()
  32. #5、求取 Calinski-Harabasz指数,确定最优聚类数
  33. from sklearn.metrics import calinski_harabaz_score
  34. for i in range(2,11):
  35. ##构建并训练模型
  36. kmeans = KMeans(n_clusters = i,random_state=1).fit(wine)
  37. score = calinski_harabaz_score(wine,kmeans.labels_)
  38. print('seeds数据聚%d类calinski_harabaz指数为:%f'%(i,score))

3、答:
 

  1. #实训3:构建基于wine数据集的SVM分类模型
  2. #(1)读取wine数据集,区分标签和数据
  3. import pandas as pd
  4. wine = pd.read_csv("D:/ly/desk/数据/1124实验数据/实验数据/wine.csv")
  5. wine_data=wine.iloc[:,1:]
  6. wine_target=wine['Class']
  7. #(2)将wine数据集划分为训练集和测试集
  8. from sklearn.model_selection import train_test_split
  9. wine_data_train, wine_data_test, \
  10. wine_target_train, wine_target_test = \
  11. train_test_split(wine_data, wine_target, \
  12. test_size=0.1, random_state=6)
  13. #(3)使用离差标准化方法标准化wine数据集。
  14. from sklearn.preprocessing import MinMaxScaler #标准差标准化
  15. stdScale = MinMaxScaler().fit(wine_data_train) #生成规则(建模)
  16. wine_trainScaler = stdScale.transform(wine_data_train)#对训练集进行标准化
  17. wine_testScaler = stdScale.transform(wine_data_test)#用训练集训练的模型对测试集标准化
  18. #(4)构建SVM模型,并预测测试集结果。
  19. from sklearn.svm import SVC
  20. svm = SVC().fit(wine_trainScaler,wine_target_train)
  21. print('建立的SVM模型为:\n',svm)
  22. wine_target_pred = svm.predict(wine_testScaler)
  23. print('预测前10个结果为:\n',wine_target_pred[:10])
  24. #(5)打印出分类报告,评价分类模型性能
  25. from sklearn.metrics import classification_report
  26. print('使用SVM预测iris数据的分类报告为:','\n',
  27. classification_report(wine_target_test,
  28. wine_target_pred))

4、答:

  1. #实训4:构建基于 wine quality数据集的回归模型
  2. #(1)根据wine_quality数据集处理的结果,构建线性回归模型。
  3. from sklearn.linear_model import LinearRegression
  4. clf = LinearRegression().fit(winequality_trainPca,winequality_target_train)
  5. y_pred = clf.predict(winequality_testPca)
  6. print('线性回归模型预测前10个结果为:','\n',y_pred[:10])
  7. #(2)根据wine_quality数据集处理的结果,构建梯度提升回归模型。
  8. from sklearn.ensemble import GradientBoostingRegressor
  9. GBR_wine = GradientBoostingRegressor().\
  10. fit(winequality_trainPca,winequality_target_train)
  11. wine_target_pred = GBR_wine.predict(winequality_testPca)
  12. print('梯度提升回归模型预测前10个结果为:','\n',wine_target_pred[:10])
  13. print('真实标签前十个预测结果为:','\n',list(winequality_target_test[:10]))
  14. #(3)结合真实评分和预测评分,计算均方误差、中值绝对误差、可解释方差值。
  15. #(4)根据得分,判定模型的性能优劣
  16. print('线性回归模型评价结果:')
  17. print('winequality数据线性回归模型的平均绝对误差为:',
  18. mean_absolute_error(winequality_target_test,y_pred))
  19. print('winequality数据线性回归模型的均方误差为:',
  20. mean_squared_error(winequality_target_test,y_pred))
  21. print('winequality数据线性回归模型的中值绝对误差为:',
  22. median_absolute_error(winequality_target_test,y_pred))
  23. print('winequality数据线性回归模型的可解释方差值为:',
  24. explained_variance_score(winequality_target_test,y_pred))
  25. print('winequality数据线性回归模型的R方值为:',
  26. r2_score(winequality_target_test,y_pred))
  27. print('梯度提升回归模型评价结果:')
  28. from sklearn.metrics import explained_variance_score,\
  29. mean_absolute_error,mean_squared_error,median_absolute_error,r2_score
  30. print('winequality数据梯度提升回归树模型的平均绝对误差为:',
  31. mean_absolute_error(winequality_target_test,wine_target_pred))
  32. print('winequality数据梯度提升回归树模型的均方误差为:',
  33. mean_squared_error(winequality_target_test,wine_target_pred))
  34. print('winequality数据梯度提升回归树模型的中值绝对误差为:',
  35. median_absolute_error(winequality_target_test,wine_target_pred))
  36. print('winequality数据梯度提升回归树模型的可解释方差值为:',
  37. explained_variance_score(winequality_target_test,wine_target_pred))
  38. print('winequality数据梯度提升回归树模型的R方值为:',
  39. r2_score(winequality_target_test,wine_target_pred))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/748919
推荐阅读
相关标签
  

闽ICP备14008679号