Python----数据分析-使用scikit-learn构建模型实训(wine数据集、wine_quality数据)
目录:
wine数据集包含来自3种不同起源的葡萄酒的共178条记录。13个属性是葡萄酒的13种化学成分。通过化学分析可以来推断葡萄酒的起源。值得一提的是所有属性变量都是连续变量。
实训1 使用 sklearn处理wine和wine_quality数据集
1.训练要点
掌握 sklearn转换器的用法。
掌握训练集、测试集划分的方法。
掌握使用sklearn进行PCA降维的方法。
2.需求说明
wine数据集和 winequality数据集是两份和酒有关的数据集。wine数据集包含3种 同起源的葡萄酒的记录,共178条。其中,每个特征对应葡萄酒的每种化学成分,并且都 属于连续型数据。通过化学分析可以推断葡萄酒的起源。
winequality数据集共有4898个观察值,11个输入特征和一个标签。其中,不同类的
观察值数量不等,所有特征为连续型数据。通过酒的各类化学成分,预测该葡萄酒的评分
3.实现思路及步骤
使用pandas库分别
读取
wine数据集和 winquality数据集
将wine数据集和winequality数据集的数据和标签
拆分开(提取)
。
将winequality数据集
划分
为训练集和测试集。
标准化
wine数据集和 wine quality数据集
对wine数据集和 winequality数据集进行
PCA降维
。
import pandas as pd
// 读取数据
wine_quality = pd.read_csv('data/winequality.csv',sep=';')
wine = pd.read_csv('data/wine.csv')
print(type(wine),type(wine_quality))
//
// 提取 wine_quality 数据
wine_quality_data = wine_quality.iloc[:,:-1]
wine_quality_target = wine_quality['quality']
// 提取 wine 数据
wine_data = wine.iloc[:,:-1]
wine_target = wine['Class']
wine数据集和winequality数据集的表现形式不一样,这里的wine数据集可以直接读入,而winequality数据集在文件中是以”;”为间隔的,所以要采用间隔读入的方式获取其数据。读取后数据都以DataFrame的类型保留,使用iloc等切片操作提取所需数据。
// 将 wine_quality 数据划分为训练集和测试集
from sklearn.model_selection import train_test_split
wine_quality_data_train,wine_quality_data_test,\
wine_quality_target_train,wine_quality_target_test=\
train_test_split(wine_quality_data,wine_quality_target,test_size=0.2,random_state=321)
wine_data_train,wine_data_test,\
wine_target_train,wine_target_test=\
train_test_split(wine_data,wine_target,test_size=0.2,random_state=321)
train_test_split()函数将数据集划分为训练集和测试集两部分,参数test_size=0.2代表着测试集在总数中的占比,通过计算wine_data总共178条记录,wine_data_test有36条,占0.20224171(20%),参数random_state=321,表示随机种子编号,方便测试时得到相同随机结果。
// 标准化数据集
from sklearn.preprocessing import StandardScaler
stdScaler = StandardScaler().fit(wine_data_train) // 生成标准化规则
wine_trainScaler = stdScaler.transform(wine_data_train) // 对训练集标准化
wine_testScaler = stdScaler.transform(wine_data_test) // 用训练集建立的模型对测试集标准化
Scaler = StandardScaler().fit(wine_quality_data_train) // 生成标准化规则
winequality_trainScaler = Scaler.transform(wine_quality_data_train) // 对训练集标准化
winequality_te