使用scikit-learn构建模型

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

(1)使用使用pandas库分别读取wine数据集和win_quality数据集。

(2)将wine数据集和wine_quality数据集的数据和标签拆分开。

(3)将wine_quality数据集划分为训练集和测试集。

(4)标准化wine数据集和wine_quality数据集。

(5)对wine数据集和wine_quality数据集进行PCA降维。

源程序

import pandas as pd
wine=pd.read_csv('C:/Users/Administrator/Desktop/上机4(新)/wine.csv')
winequality=pd.read_csv('C:/Users/Administrator/Desktop/上机4(新)/winequality.csv',sep=';')
#数据和标签拆分开
wine_data=wine.iloc[:,1:]
wine_target=wine['Class']
winequality_data=winequality.iloc[:,:-1]
winequality_target=winequality['quality']
#训练集和测试集
from sklearn.model_selection import train_test_split
wine_data_train,wine_data_test,\
wine_target_train,wine_target_test= \
train_test_split(wine_data,wine_target,\
               test_size=0.1,random_state=6)

winequality_data_train,winequality_data_test,\
winequality_target_train,winequality_target_test= \
train_test_split(winequality_data,winequality_target,\
               test_size=0.1,random_state=6)
print('wine训练集数据的形状为:',wine_data_train.shape)
print('wine训练集标签的形状为:',wine_target_train.shape)
print('wine测试集数据的形状为:',wine_data_train.shape)
print('wine测试集标签的形状为:',wine_target_train.shape)
print('winequality训练集数据的形状为:',winequality_data_train.shape)
print('winequality训练集标签的形状为:',winequality_target_train.shape)
print('winequality测试集数据的形状为:',winequality_data_train.shape)
print('winequality测试集标签的形状为:',winequality_target_train.shape)

#标准化数据集
from sklearn.preprocessing import StandardScaler
stdScale=StandardScaler().fit(wine_data_train)#生成规则,建模
wine_trainScaler=stdScale.transform(wine_data_train)
wine_testScaler=stdScale.transform(wine_data_test)

stdScale=StandardScaler().fit(winequality_data_train)#生成规则,建模
winequality_trainScaler=stdScale.transform(winequality_data_train)
winequality_testScaler=stdScale.transform(winequality_data_test)
#PCA降维
from sklearn.decomposition import PCA
pca=PCA(n_components=5).fit(wine_trainScaler)
wine_trainPca=pca.transform(wine_trainScaler)
wine_testPca=pca.transform(wine_testScaler)

pca=PCA(n_components=5).fit(winequality_trainScaler)
winequality_trainPca=pca.transform(winequality_trainScaler)
winequality_testPca=pca.transform(winequality_testScaler)
print('PCA降维前wine训练集数据的形状为:',wine_trainScaler.shape)
print('PCA降维后wine训练集数据的形状为:',wine_trainPca.shape)
print('PCA降维前wine测试集数据的形状为:',wine_trainScaler.shape)
print('PCA降维后wine测试集数据的形状为:',wine_trainPca.shape)
print('PCA降维前winequality训练集数据的形状为:',winequality_trainScaler.shape)
print('PCA降维后winequality训练集数据的形状为:',winequality_trainPca.shape)
print('PCA降维前winequality测试集数据的形状为:',winequality_trainScaler.shape)
print('PCA降维后winequality测试集数据的形状为:',winequality_trainPca.shape)

结果截屏

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rOg5rOg5LiD5bym5LiKQOmdmeWQrOadvumjjuWvkg==,size_8,color_FFFFFF,t_70,g_se,x_16

2.构建基于wine数据集的K-Means聚类模型。

(1)根据第一题的wine数据集处理的结果,构建聚类数目为3的K-Means模型。

(2)对比真实标签和聚类标签求取FMI。

(3)在聚类数目为2~10类时,确定最优聚类数目。

(4)求取模型的轮廓系数,绘制轮廓系数折线图,确定最优聚类数目。

(5)求取Calinski-Harabasz指数,确定最优聚类数目。

源代码

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters = 3,random_state=1).fit(wine_trainScaler)
print('构建的KMeans模型为:\n',kmeans)

from sklearn.metrics import fowlkes_mallows_score #FMI评价法
score=fowlkes_mallows_score(wine_target_train,kmeans.labels_)
print("wine数据集的FMI:%f"%(score))

for i in range(2,11):
    kmeans = KMeans(n_clusters = i,random_state=123).fit(wine_trainScaler)
    score = fowlkes_mallows_score(wine_target_train,kmeans.labels_)
    print('iris数据聚%d类FMI评价分值为:%f' %(i,score))

from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
silhouettteScore = []
for i in range(2,11):
    kmeans = KMeans(n_clusters = i,random_state=1).fit(wine)
    score = silhouette_score(wine,kmeans.labels_)
    silhouettteScore.append(score)
plt.figure(figsize=(10,6))
plt.plot(range(2,11),silhouettteScore,linewidth=1.5, linestyle="-")
plt.show()

from sklearn.metrics import calinski_harabasz_score
for i in range(2,11):
    kmeans = KMeans(n_clusters = i,random_state=1).fit(wine)
    score = calinski_harabasz_score(wine,kmeans.labels_)
    print('seeds数据聚%d类calinski_harabaz指数为:%f'%(i,score))

 运行截图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rOg5rOg5LiD5bym5LiKQOmdmeWQrOadvumjjuWvkg==,size_11,color_FFFFFF,t_70,g_se,x_16

3.构建基于wine数据集的SVM分类模型。

(1)读取wine数据集,区分标签和数据。

(2)将wine数据集划分为训练集和测试集。

(3)使用离差标准化方法标准化wine数据集。

(4)构建SVM模型,并预测测试集结果。

(5)打印出分类报告,评价分类模型性能。

源代码

import pandas as pd
wine = pd.read_csv('C:/Users/Administrator/Desktop/上机4(新)/wine.csv')
wine_data=wine.iloc[:,1:]
wine_target=wine['Class']

from sklearn.model_selection import train_test_split
wine_data_train, wine_data_test, \
wine_target_train, wine_target_test = \
train_test_split(wine_data, wine_target, \
    test_size=0.1, random_state=6)

from sklearn.preprocessing import MinMaxScaler #标准差标准化
stdScale = MinMaxScaler().fit(wine_data_train) #生成规则(建模)
wine_trainScaler = stdScale.transform(wine_data_train)#对训练集进行标准化
wine_testScaler = stdScale.transform(wine_data_test)#用训练集训练的模型对测试集标准化

from sklearn.svm import SVC 
svm = SVC().fit(wine_trainScaler,wine_target_train)
print('建立的SVM模型为:\n',svm)
wine_target_pred = svm.predict(wine_testScaler)
print('预测前10个结果为:\n',wine_target_pred[:10])

from sklearn.metrics import classification_report
print('使用SVM预测iris数据的分类报告为:','\n',
      classification_report(wine_target_test,
            wine_target_pred))

 运行截图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rOg5rOg5LiD5bym5LiKQOmdmeWQrOadvumjjuWvkg==,size_8,color_FFFFFF,t_70,g_se,x_16

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值