白葡萄酒/红葡萄酒质量分析与预测(PCA+MLPClassifier)100%
白葡萄酒质量数据集
数据来自于: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%相关推荐
- 城市空气质量分析与预测
城市空气质量分析与预测 一.AQI分析与预测 1.背景信息 2.任务说明 3.数据集描述 二.数据分析流程 基本流程 三.读取数据 1.导入相关的库 2.加载数据集 四.数据清洗 1.缺失值 1.1. ...
- python空气质量分析与预测_干货!如何用 Python+KNN 算法实现城市空气质量分析与预测?...
原标题:干货!如何用 Python+KNN 算法实现城市空气质量分析与预测? 作者 | 李秋键 责编 | 伍杏玲 封图 | CSDN 付费下载自东方 IC 出品 | CSDN(ID:CSDNnews) ...
- [机器学习笔记] 用Python分析:红葡萄酒质量分析(数据探索)
用Python分析:红葡萄酒质量分析(数据探索) 数据集:winemag-data_first150k.csv 先来导入数据 import numpy as np import pandas as p ...
- AQI空气质量分析与预测
AQI分析与预测 背景信息 AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好. 本文的分析目标 一.描述性统计 哪些城市的空气质 ...
- python空气质量分析与预测_AQI(空气质量指数)分析与预测(一)
任务说明 期望能够运用数据分析的相关技术,对全国城市空气质量进行研究与分析,希望能够解决如下疑问: 哪些城市的空气质量较好/较差?[描述性统计分析] 空气质量在地理位置上,是否具有一定的规律?[描述性 ...
- python空气质量分析与预测_python 空气质量AQI数据分析与预测 ---分析,相关系数矩阵...
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/YmeBtc/article/details ...
- 【数据挖掘】葡萄酒质量分析及异常值检测
背景介绍 葡萄酒在人类历史中扮演着非常重要的角色,它能舒缓疲劳.减轻病痛.消毒杀菌.美容养颜等等直到19世纪晚期,葡萄酒都是西方医学中不可缺少的用品,适量饮用对人的身体会有益处.无论是用于交际会谈,还 ...
- Python数据分析实战之葡萄酒质量分析
文章目录 1. 明确需求和目的 2. 数据收集 3. 数据预处理 3.1 数据整合 3.1.1 加载相关库和数据集 3.1.2 数据概览 3.2 数据清洗 3.2.1 列名重命名 3.2.2 数据类型 ...
- python产品质量分析_Python数据分析实战之葡萄酒质量分析
1. 明确需求和目的 以葡萄酒类型为标签,分为白葡萄酒和红葡萄酒.比较这两种葡萄酒的差别并选取葡萄酒的化学成分:固定酸度.挥发性酸度.柠檬酸.氯化物.游离二氧化硫.总硫度.密度.PH值.硫酸盐.酒精度 ...
最新文章
- 第三周项目二-本月有几天?
- 【Java_多线程并发编程】JUC原子类——4种原子类
- java读取文件 16进制_Java对文件的16进制读取和操作
- QT 之 TCP/IP 服务器和客户端(一)
- C++ STL 容器 string
- Python系列文章
- 导出zabbix的IT service报表
- android拆轮子系列之一步一步教你写微信抢红包插件
- 车联网在智慧城市中的发展与应用
- 南开100题计算机三级数据库,全国计算机三级数据库技术南开100题.doc
- 解决Chrome谷歌浏览器Flash插件已被屏蔽
- python gamma函数_Python 不完全伽马函数
- 代码写过300张可视化,为什么建议你用报表工具开发数据大屏?
- 互联网三大巨头依靠什么武器对垒O2O?
- 一键合并多个Excel文档
- Windows10只关闭显卡驱动更新
- 滕州小学计算机教室,东湖教育四十年|滕州小学--小学校 大世界
- Ubuntu18.04+ROS melodic 控制UR5机器人(持续更新)
- Camera日记(一)-ISP
- 京东360buy 手机项目的“加入购物车”动画效果研究
热门文章
- HAL层,.sensors.h 头文件分析
- Oracle数据库 | Oracle并发与一致性
- 百度智能云区块链产品负责人刘尧:Web3.0时代加速区块链到来,具有五大特性...
- 关于页面失去焦点时定时器乱序问题
- jqGrid可编辑模式下 单元格内容不能复制处理
- 持续交付2.0(一至三章)
- 商城项目18_esMapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器
- 【游戏编程扯淡精粹】游戏编程设计模式
- Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
- ECSHOP goods表字段分析