白葡萄酒质量数据集

数据来自于:https://scikit-learn.org/stable/modules/preprocessing.html

导包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns  #Seaborn是python中的一个可视化库,是对matplotlib进行二次封装而成
sns.set_style('darkgrid')
import warnings
warnings.filterwarnings('ignore')

加载数据

预处理

df = pd.read_csv('white.csv',sep=';')
df.to_csv('white1.csv')
df = pd.read_csv('white1.csv',index_col=0)
df2 = pd.read_csv('white1.csv',index_col=0)
df1 = pd.read_csv('white1.csv')
df.head()
yy = df['quality']

查看数据的一些基本信息

  • 数据类型 DataFrame
  • 有4898条数据(4898行),索引为0-4897
  • 该数据帧有12列
  • #: 索引号
  • column: 每列数据的列名
  • Non-Null count: 每列数据的数据个数,缺失值NaN不作计算。可以看出下面面所有数据都没有缺失值。
  • Dtype: 数据的类型。
  • dtypes: float64(11), int64(1):数据类型的统计
  • memory usage: 459.3 KB:该数据帧占用的运行内存(RAM)

df.info()

  • count:数量统计,此列共有多少有效值
  • unipue:不同的值有多少个
  • std:标准差
  • min:最小值
  • 25%:四分之一分位数
  • 50%:二分之一分位数
  • 75%:四分之三分位数
  • max:最大值
  • mean:均值

df.describe()

数据分析

绘制计数图

sns.countplot(df['quality'])
print(df['quality'].value_counts())

i=1
plt.figure(figsize=(15,20))
for col in df.columns:plt.subplot(6,2,i)sns.distplot(df[col])i+=1


i=1
plt.figure(figsize=(15,20))
for col in df.columns:plt.subplot(6,2,i)sns.barplot(x=df['quality'], y= df[col])i+=1


整体过采样

说到最重要的部分,我们现在将进行欠采样和过采样。

通过这张图片了解过采样和欠采样究竟是什么

简单来说:

  • 过采样中,最简单实现是从少数类复制随机记录,这可能会导致过度重合。

  • 欠采样中,最简单的方法是从多数类中删除随机记录,这可能会导致信息丢失。

df_3 = df2[df2.quality==3]
df_4 = df2[df2.quality==4]
df_5 = df2[df2.quality==5]
df_6 = df2[df2.quality==6]
df_7 = df2[df2.quality==7]
df_8 = df2[df2.quality==8]
df_9 = df2[df2.quality==9]     #我们之前已经确定,除了质量6之外,所有其他的都是少数!
# 过采样少数类以生成平衡数据:
from sklearn.utils import resampledf_3_upsampled = resample(df_3, replace=True, n_samples=2000, random_state=12)
df_4_upsampled = resample(df_4, replace=True, n_samples=2000, random_state=12)
df_5_upsampled = resample(df_5, replace=True, n_samples=2000, random_state=12)
df_7_upsampled = resample(df_7, replace=True, n_samples=2000, random_state=12)
df_8_upsampled = resample(df_8, replace=True, n_samples=2000, random_state=12)
df_9_upsampled = resample(df_9, replace=True, n_samples=2000, random_state=12) # 减少多数的行以生成余额数据:
df_6_downsampled = df2[df2.quality==6].sample(n=2000).reset_index(drop=True)
# 将下采样多数类与上采样少数类相结合
Balanced_df = pd.concat([df_3_upsampled, df_4_upsampled, df_7_upsampled, df_8_upsampled, df_9_upsampled,df_5_upsampled, df_6_downsampled]).reset_index(drop=True)# 显示新类别计数
Balanced_df.quality.value_counts()

我们可以看到,我们所有质量类别的数量都是相等的!

plt.figure(figsize=(10,6))
sns.countplot(x='quality', data=Balanced_df, order=[3, 4, 5, 6, 7, 8, 9])

我们可以看到,我们所有质量类别的数量都是相等的!

from sklearn.model_selection import train_test_split
xxx = Balanced_df
yyy = Balanced_df.qualityXXX_train, XXX_test, YYY_train,YYY_test= train_test_split(xxx,yyy, test_size=0.3)

整体过采样PCA处理

from sklearn.preprocessing import StandardScaler
scalar = StandardScaler()
df_scaled1 = pd.DataFrame(scalar.fit_transform(Balanced_df), columns=Balanced_df.columns)
df_scaled1.head()

from sklearn.decomposition import PCA
pca1 = PCA(n_components=11)df_pca1 = pd.DataFrame(pca1.fit_transform(Balanced_df))
xx1 = df_pca1
xx1

from sklearn.model_selection import train_test_split
yyy = Balanced_df.qualityXXX_train, XXX_test, YYY_train,YYY_test= train_test_split(xx1,yyy, test_size=0.3)
print(len(XXX_train))
print(len(XXX_test))

PCA全数据过采样与欠采样模型选择

training_scores= []
testing_scores=[]for key, value in models.items():value.fit(XXX_train, YYY_train)train_score= value.score(XXX_train,  YYY_train)test_score= value.score(XXX_test, YYY_test)training_scores.append(train_score)testing_scores.append(test_score)print(f"{key}\n")print(f"Training 准确率为: {train_score}" )print(f"Testing 准确率为: {test_score} \n")

交叉验证

from sklearn.model_selection import cross_val_score
cv_scores= []for key, value in models.items():cvs=cross_val_score(value, xx1,yyy, cv=5)#交叉验证生成器或可迭代的次数cv_scores.append(cvs.mean())print(f"{key}\n")print(f"CV 准确率为: {cvs.mean()} \n" )

from sklearn.metrics import  classification_report,precision_scorerfc=MLPClassifier()
rfc.fit(XXX_train,YYY_train)
y_pred= rfc.predict(XXX_test)
print(classification_report(YYY_test,y_pred))
print("accuracy score:", accuracy_score(YYY_test,y_pred)*100)
print('损失值是:', rfc.loss_)
print('层数是:', rfc.n_layers_)
print('输出的类标签是:', rfc.classes_)
print('迭代次数是:', rfc.n_iter_)
print('激活函数的名称是:', rfc.out_activation_)
print('输出的个数是:', rfc.n_outputs_)sns.countplot(YYY_test)


pass:正常来说,还要对模型进行模型调参,博主这里已经跑到了100%就没有对模型进行调参。

项目代码文件与PPT介绍也都放在资源库中

https://download.csdn.net/download/qq_52201194/85813596?spm=1001.2014.3001.5503

白葡萄酒/红葡萄酒质量分析与预测(PCA+MLPClassifier)100%相关推荐

  1. 城市空气质量分析与预测

    城市空气质量分析与预测 一.AQI分析与预测 1.背景信息 2.任务说明 3.数据集描述 二.数据分析流程 基本流程 三.读取数据 1.导入相关的库 2.加载数据集 四.数据清洗 1.缺失值 1.1. ...

  2. python空气质量分析与预测_干货!如何用 Python+KNN 算法实现城市空气质量分析与预测?...

    原标题:干货!如何用 Python+KNN 算法实现城市空气质量分析与预测? 作者 | 李秋键 责编 | 伍杏玲 封图 | CSDN 付费下载自东方 IC 出品 | CSDN(ID:CSDNnews) ...

  3. [机器学习笔记] 用Python分析:红葡萄酒质量分析(数据探索)

    用Python分析:红葡萄酒质量分析(数据探索) 数据集:winemag-data_first150k.csv 先来导入数据 import numpy as np import pandas as p ...

  4. AQI空气质量分析与预测

    AQI分析与预测 背景信息 AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好. 本文的分析目标 一.描述性统计 哪些城市的空气质 ...

  5. python空气质量分析与预测_AQI(空气质量指数)分析与预测(一)

    任务说明 期望能够运用数据分析的相关技术,对全国城市空气质量进行研究与分析,希望能够解决如下疑问: 哪些城市的空气质量较好/较差?[描述性统计分析] 空气质量在地理位置上,是否具有一定的规律?[描述性 ...

  6. python空气质量分析与预测_python 空气质量AQI数据分析与预测 ---分析,相关系数矩阵...

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/YmeBtc/article/details ...

  7. 【数据挖掘】葡萄酒质量分析及异常值检测

    背景介绍 葡萄酒在人类历史中扮演着非常重要的角色,它能舒缓疲劳.减轻病痛.消毒杀菌.美容养颜等等直到19世纪晚期,葡萄酒都是西方医学中不可缺少的用品,适量饮用对人的身体会有益处.无论是用于交际会谈,还 ...

  8. Python数据分析实战之葡萄酒质量分析

    文章目录 1. 明确需求和目的 2. 数据收集 3. 数据预处理 3.1 数据整合 3.1.1 加载相关库和数据集 3.1.2 数据概览 3.2 数据清洗 3.2.1 列名重命名 3.2.2 数据类型 ...

  9. python产品质量分析_Python数据分析实战之葡萄酒质量分析

    1. 明确需求和目的 以葡萄酒类型为标签,分为白葡萄酒和红葡萄酒.比较这两种葡萄酒的差别并选取葡萄酒的化学成分:固定酸度.挥发性酸度.柠檬酸.氯化物.游离二氧化硫.总硫度.密度.PH值.硫酸盐.酒精度 ...

最新文章

  1. 第三周项目二-本月有几天?
  2. 【Java_多线程并发编程】JUC原子类——4种原子类
  3. java读取文件 16进制_Java对文件的16进制读取和操作
  4. QT 之 TCP/IP 服务器和客户端(一)
  5. C++ STL 容器 string
  6. Python系列文章
  7. 导出zabbix的IT service报表
  8. android拆轮子系列之一步一步教你写微信抢红包插件
  9. 车联网在智慧城市中的发展与应用
  10. 南开100题计算机三级数据库,全国计算机三级数据库技术南开100题.doc
  11. 解决Chrome谷歌浏览器Flash插件已被屏蔽
  12. python gamma函数_Python 不完全伽马函数
  13. 代码写过300张可视化,为什么建议你用报表工具开发数据大屏?
  14. 互联网三大巨头依靠什么武器对垒O2O?
  15. 一键合并多个Excel文档
  16. Windows10只关闭显卡驱动更新
  17. 滕州小学计算机教室,东湖教育四十年|滕州小学--小学校 大世界
  18. Ubuntu18.04+ROS melodic 控制UR5机器人(持续更新)
  19. Camera日记(一)-ISP
  20. 京东360buy 手机项目的“加入购物车”动画效果研究

热门文章

  1. HAL层,.sensors.h 头文件分析
  2. Oracle数据库 | Oracle并发与一致性
  3. 百度智能云区块链产品负责人刘尧:Web3.0时代加速区块链到来,具有五大特性...
  4. 关于页面失去焦点时定时器乱序问题
  5. jqGrid可编辑模式下 单元格内容不能复制处理
  6. 持续交付2.0(一至三章)
  7. 商城项目18_esMapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器
  8. 【游戏编程扯淡精粹】游戏编程设计模式
  9. Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
  10. ECSHOP goods表字段分析