在本次分析中,我使用了随机森林回归,并涉及数据标准化和超参数调优。在这里,我使用随机森林分类器,对好酒和不太好的酒进行二元分类。

首先导入数据包:

importnumpy as npimportpandas as pdimportmatplotlib.pyplot as pltimport seaborn as sns

导入数据:

data = pd.read_csv(‘winequality-red.csv‘)

data.head()

data.describe()

注释:

fixed acidity:非挥发性酸

volatile acidity : 挥发性酸

citric acid:柠檬酸

residual sugar :剩余糖分

chlorides:氯化物

free sulfur dioxide :游离二氧化硫

total sulfur dioxide:总二氧化硫

density:密度

pH:pH

sulphates:硫酸盐

alcohol:酒精

quality:质量

所有数据的数值为1599,所以没有缺失值。让我们看看是否有重复值:

extra =data[data.duplicated()]

extra.shape

有240个重复值,但先不删除它,因为葡萄酒的质量等级是由不同的品酒师给出的。

数据可视化

sns.set()

data.hist(figsize=(10,10), color=‘red‘)

plt.show()

只有质量是离散型变量,主要集中在5和6中,下面分析下变量的相关性:

colormap =plt.cm.viridis

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

plt.title(‘Correlation of Features‘, y=1.05, size=15)

sns.heatmap(data.astype(float).corr(),linewidths=0.1,vmax=1.0, square=True,

linecolor=‘white‘, annot=True)

观察:

酒精与葡萄酒质量的相关性最高,其次是各种酸度、硫酸盐、密度和氯化物。

使用分类器:

将葡萄酒分成两组;“优质”>5为“好酒”

y = data.quality #set ‘quality‘ as target

X = data.drop(‘quality‘, axis=1) #rest are features

print(y.shape, X.shape) #check correctness

#Create a new y1

y1 = (y > 5).astype(int)

y1.head()

# plot histogram

ax= y1.plot.hist(color=‘green‘)

ax.set_title(‘Wine quality distribution‘, fontsize=14)

ax.set_xlabel(‘aggregated target value‘)

利用随机森林分类器训练预测模型

from sklearn.model_selection importtrain_test_split, cross_val_scorefrom sklearn.ensemble importRandomForestClassifierfrom sklearn.metrics importaccuracy_score, log_lossfrom sklearn.metrics import confusion_matrix

将数据分割为训练和测试数据集

seed = 8 #set seed for reproducibility

X_train, X_test, y_train, y_test = train_test_split(X, y1, test_size=0.2,

random_state=seed)

print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)

对随机森林分类器进行交叉验证训练和评价

#Instantiate the Random Forest Classifier

RF_clf = RandomForestClassifier(random_state=seed)

RF_clf

#在训练数据集上计算k-fold交叉验证,并查看平均精度得分

cv_scores = cross_val_score(RF_clf,X_train, y_train, cv=10, scoring=‘accuracy‘)print(‘The accuracy scores for the iterations are {}‘.format(cv_scores))print(‘The mean accuracy score is {}‘.format(cv_scores.mean()))

执行预测

RF_clf.fit(X_train, y_train)

pred_RF= RF_clf.predict(X_test)

#Print 5 results to see

for i in range(0,5):print(‘Actual wine quality is‘, y_test.iloc[i], ‘and predicted is‘, pred_RF[i])

在前五名中,有一个错误。让我们看看指标。

print(accuracy_score(y_test, pred_LR))print(log_loss(y_test, pred_LR))

print(confusion_matrix(y_test, pred_LR))

总共有81个分类错误。

与Logistic回归分类器相比,随机森林分类器更优。

让我们调优随机森林分类器的超参数

from sklearn.model_selection importGridSearchCV

grid_values= {‘n_estimators‘:[50,100,200],‘max_depth‘:[None,30,15,5],‘max_features‘:[‘auto‘,‘sqrt‘,‘log2‘],‘min_samples_leaf‘:[1,20,50,100]}

grid_RF= GridSearchCV(RF_clf,param_grid=grid_values,scoring=‘accuracy‘)

grid_RF.fit(X_train, y_train)

grid_RF.best_params_

除了估计数之外,其他推荐值是默认值。

RF_clf = RandomForestClassifier(n_estimators=100,random_state=seed)

RF_clf.fit(X_train,y_train)

pred_RF=RF_clf.predict(X_test)print(accuracy_score(y_test,pred_RF))print(log_loss(y_test,pred_RF))

print(confusion_matrix(y_test,pred_RF))

通过超参数调谐,射频分类器的准确度已提高到82.5%,日志损失值也相应降低。分类错误的数量也减少到56个。

将随机森林分类器作为基本推荐器,将红酒分为“推荐”(6级以上)或“不推荐”(5级以下),预测准确率为82.5%似乎是合理的。

python葡萄酒数据集_利用python分析红葡萄酒数据相关推荐

  1. python创建数据集_利用 python 在本地数据集创建训练集和测试集

    根据自己的数据集,自动划分训练集.测试集 举个栗子: 已经分好的文件: origin 文件夹有三类数据:good,bad,m,每类文件夹包含不同数量的图片,如下: 需要生成数据集的文件: 结果:根据设 ...

  2. python读取sas数据集_利用Python获取SAS和R自带数据集

    图:北京-奥森公园-2018年4月 无论是SAS.R还是Python,本身都自带一些数据集,对于初学者来说,可以通过这些自带的小数据集进行编程练习,无疑是非常方便的.SAS.R作为统计分析软件,本身自 ...

  3. python音频聚类_利用python的KMeans和PCA包实现聚类算法

    题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...

  4. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

  5. python计算信息增益_利用Python提取ABAQUS的计算结果(ODB)信息、体积、应变等变化(一)...

    00 实例模型 一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移.体积.应变随加载时间的变化情况. 图1 金属长方体约束加载示意图 01 Py ...

  6. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  7. python多元非线性回归_利用Python进行数据分析之多元线性回归案例

    线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量).例如,餐厅根据每天的营业数据(包括菜谱价格.就餐人数.预定人数.特价菜折扣等)预测就餐规 ...

  8. 利用python画曲线_利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码.1XS免费资源网 直接上代码:1XS免费资源网 from sklearn.datasets import loa ...

  9. python抽奖游戏_利用Python写一个抽奖程序,解密游戏内抽奖的秘密

    原标题:利用Python写一个抽奖程序,解密游戏内抽奖的秘密 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 极客 ...

最新文章

  1. Wiener Filter
  2. 2013年下半年信息系统项目管理师考试论文试卷
  3. golang 网页解析 goquer包 简介
  4. 外部网络如何获取网口打印机的ip地址_网络打印机端口用名称好是还是IP好?...
  5. 远程 不显示本地硬盘解决办法(高级版)
  6. highcharts 去掉Highcharts.com链接
  7. delphi刷新界面所选行丢失问题
  8. apache日志 waf_企业安全体系架构分析:开发架构之开源WAF延申
  9. 财务 - 注册会计师
  10. 3D打印路径填充算法 -- Connected Fermat Spirals for Layered Fabrication
  11. LaTeX:大于等于号,小于等于号,大于号,小于号
  12. 【OpenGL ES】着色语言GLSL
  13. 什么是AVIF?如何在你的网站上使用AV1格式图像
  14. 用计算机用语说唯美的话,说说唯美的句子
  15. pygame实现动态小鸟飞行 + 打包发布
  16. Java项目生成静态页面
  17. 让你提前认识软件开发(46):首先是为人编写程序,其次才是计算机
  18. 斯坦福大学吴恩达教授最新来信:AI, GPU和芯片的未来
  19. ​ ​c盘满了怎么扩展分区?​c盘太小如何扩展分区 ​
  20. 利用WMIC实战MS16-032本地溢出漏洞

热门文章

  1. 我终于知道post和get的区别
  2. 从0开始编写dapper核心功能、压榨性能、自己动手丰衣足食
  3. .NET Core 微服务之Polly熔断策略
  4. 不装 VS 自己编译安装 Windows Terminal
  5. IdentityServer4-MVC+Hybrid实现Claims授权验证(四)
  6. 工厂参观记:.NET Core 中 HttpClientFactory 如何解决 HttpClient 臭名昭著的问题
  7. ASP.NET Core 2.1中基于角色的授权
  8. [译]ASP.NET Core 2.0 带初始参数的中间件
  9. c语言兔子洞,数据结构水题选讲 - osc_y08db3kb的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. java原子类场景,CAS你知道吗?原子类AtomicInteger的ABA问题谈谈?,原子共面问题...