基于python对葡萄酒质量的预测(浅学)

首先,通过网址https://archive.ics.uci.edu/ml/datasets/Wine+Quality

下载数据集winequality-red.csv,winequality-white.csv。

准备工作完成后,首先考虑到预测葡萄酒质量的实际数值,使用线性回归算法来构建回归模型,考虑采用计算均方误差来评估模型的性能。

#本代码使用线性回归算法来训练模型,并预测红葡萄酒和白葡萄酒的质量

#本代码预测葡萄酒质量的实际数值,因此使用回归任务进行建模

#使用线性回归算法来构建回归模型,并计算均方误差来评估模型的性能

import pandas as pd

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_error

# 加载数据

white_wine = pd.read_csv('winequality-white.csv', delimiter=';')

red_wine = pd.read_csv('winequality-red.csv', delimiter=';')

# 合并数据

data = pd.concat([white_wine, red_wine])

# 提取特征和标签

X = data.drop(['quality'], axis=1)

y = data['quality']

# 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 构建模型

lr = LinearRegression()

lr.fit(X_train, y_train)

# 预测测试集

y_pred = lr.predict(X_test)

# 计算均方误差

mse = mean_squared_error(y_test, y_pred)

print('均方误差(MSE):', mse)

print("均方误差(MSE)是各数据偏离真实值差值的平方和的平均数")

但是均方误差并不能直观体现葡萄酒质量的好坏,于是采用随机森林算法来训练模型,并预测红葡萄酒和白葡萄酒的质量等级。

#使用随机森林算法来训练模型,并预测红葡萄酒和白葡萄酒的质量等级

#这里的任务是预测葡萄酒的质量等级,因此使用分类任务进行建模

import pandas as pd

from sklearn.ensemble import RandomForestClassifier

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

# 加载数据

white_wine = pd.read_csv('winequality-white.csv', delimiter=';')

red_wine = pd.read_csv('winequality-red.csv', delimiter=';')

# 合并数据

data = pd.concat([white_wine, red_wine])

# 将质量等级转换为分类标签

data['quality_label'] = pd.cut(data['quality'], bins=[0,6,10], labels=[0,1])

# 提取特征和标签

X = data.drop(['quality', 'quality_label'], axis=1)

y = data['quality_label']

# 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 构建模型

rf = RandomForestClassifier(n_estimators=100, random_state=42)

rf.fit(X_train, y_train)

# 预测测试集

y_pred = rf.predict(X_test)

# 计算准确率

accuracy = accuracy_score(y_test, y_pred)

print('准确度(Accuracy):', accuracy)

print('如果有0-10分,本算法给出的分数为:', accuracy*10,"分")

由于数据集数量较多,总体等级并不能代表全部等级,于是想到当想要对葡萄酒质量的分布情况进行可视化时,直方图是一个非常好的工具。可以使用Matplotlib库绘制白葡萄酒和红葡萄酒质量分布情况的直方图。

#当我们想要对葡萄酒质量的分布情况进行可视化时,直方图是一个非常好的工具

#这里使用Matplotlib库绘制白葡萄酒和红葡萄酒质量分布情况的直方图

#将质量得分分为6个等级,并使用alpha参数设置直方图的透明度,使得两个直方图可以同时显示

#最后,使用xlabel、ylabel和title函数设置图表的横轴标签、纵轴标签和标题,并使用legend函数添加图例

import pandas as pd

import matplotlib.pyplot as plt

# 加载数据

white_wine = pd.read_csv('winequality-white.csv', delimiter=';')

red_wine = pd.read_csv('winequality-red.csv', delimiter=';')

# 绘制白葡萄酒质量分布直方图

plt.hist(white_wine['quality'], bins=6, alpha=0.5, label='White Wine')

plt.xlabel('Quality')

plt.ylabel('Frequency')

plt.title('White Wine Quality Distribution')

plt.legend()

# 绘制红葡萄酒质量分布直方图

plt.hist(red_wine['quality'], bins=6, alpha=0.5, label='Red Wine')

plt.xlabel('Quality')

plt.ylabel('Frequency')

plt.title('Red Wine Quality Distribution')

plt.legend()

plt.show()

最后使用scikit-learn库内置的plot_tree函数绘制分类模型决策树。

#这里使用scikit-learn库内置的plot_tree函数绘制分类模型决策树

#使用DecisionTreeClassifier算法来构建分类模型,并使用plot_tree函数将决策树以可视化形式呈现

#这里使用plot_tree函数绘制决策树,使用起来非常方便,同时还可以根据需要进行参数设置,满足不同的可视化需求。

import pandas as pd

from sklearn.tree import DecisionTreeClassifier, plot_tree

import matplotlib.pyplot as plt

# 加载数据

white_wine = pd.read_csv('winequality-white.csv', delimiter=';')

red_wine = pd.read_csv('winequality-red.csv', delimiter=';')

# 合并数据

data = pd.concat([white_wine, red_wine])

# 将质量等级转换为分类标签

data['quality_label'] = pd.cut(data['quality'], bins=[0,6,10], labels=[0,1])

# 提取特征和标签

X = data.drop(['quality', 'quality_label'], axis=1)

y = data['quality_label']

# 构建模型

dt = DecisionTreeClassifier(max_depth=3, random_state=42)

dt.fit(X, y)

# 绘制决策树

plt.figure(figsize=(18,12))

plot_tree(dt, filled=True, impurity=False, feature_names=X.columns, class_names=['Bad', 'Good'])

plt.show()

你可能感兴趣的:(python,开发语言)