为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

这篇具有很好参考价值的文章主要介绍了为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、实验目的

二、实验环境

三、实验内容与结果

1、SVM(support vector Machine)是什么?

2、SVM能干什么?

3、SVM如何实现?

4、独热编码:独热编码(One-Hot Encoding) - 知乎

5、 随机森林算法的基本原理

四、模型构建

1、读入数据

2、数据初始化

3、训练模型,评价分类器性能

4、将数据集拆分为训练集和测试集,在测试集上查看分类效果

5、数据处理

总结



前言

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、实验目的

  1. 掌握机器学习建模分析
  2. 掌握回归分析、分类分析、聚类分析、降维等
  3. 了解各分类器之间的差异

二、实验环境

  1.   操作系统:Windows
  2.   应用软件:anaconda jupyter

三、实验内容与结果

1、SVM(support vector Machine)是什么?

支持向量机是基于数学优化方法的分类学习算法

• 通过使用最大分类间隔(Margin)来确定最优的最优的划分超平面,以获得良好的泛化能力

• 通过核函数的方法将低维数据映射到高维空间,并使得在高维空间的数据是线性可分的,从而能够处理低维空间中线性不可分的情况

具体理解可参考以下链接:[白话解析] 深入浅出支持向量机(SVM)之核函数 - 腾讯云开发者社区-腾讯云

2、SVM能干什么?

• SVM最基本的应用:分类

•    求解一个最优的分类面,将数据集分割为两个的子集

•    数据集在低维空间中无法使用超平面划分

•    映射到高维空间,寻找超平面分割

 3、SVM如何实现?

SVM采用核函数(Kernel Function)将低维数据映射到高维空间

•    多种核函数,适应不同特性的数据集,影响SVM分类性能的关键因素
•    常用的核函数:线性核、多项式核、高斯核和sigmoid核等

为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

4、独热编码:独热编码(One-Hot Encoding) - 知乎

可以大概这么理解:平等地位的就独热编码,有大小顺序的就标签编码;

其实严格来说性别也应该独热编码,因为他们是平等的。

5、 随机森林算法的基本原理

核心思想是“三个臭皮匠,顶个诸葛亮”

• 通过随机的方式建立一个森林
• 每棵树都是由从训练集中抽取的部分样本,且基于部分随机选择的特征子集训练构建
• 预测未知数据时,多个决策树投票决定最终结果:如果是数值形的输出,则采取多个决策树结果的平均或者加权作为最终输出;如果是分类任务,则采取投票机制或者是加权作为最终输出。 

四、模型构建

例题

1.使用scikit-learn建立SVM模型为葡萄酒数据集构造分类器(分类结果为’good’或‘not’ ) [“不可使用quantity”列]

2.评估分类器在此数据集上的分类性能* 需要划分训练集和测试集

1、读入数据

为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

原始数据共有3899条。 

代码如下:

import pandas as pd
filename='data\wine.csv'
data=pd.read_csv(filename,index_col='idx')
data.loc[data['good_or_not']=='good','good_or_not']=1
data.loc[data['good_or_not']=='not','good_or_not']=0
data.drop('quality',axis=1,inplace=True)
print(data[0:5])

为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

 2、数据初始化

代码如下(示例):

from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.preprocessing import MinMaxScaler
x = data.drop('good_or_not', axis=1).values.astype(float)
y = data['good_or_not'].values.astype(float)
print(type(x),type(y))

3、训练模型,评价分类器性能

from sklearn import svm
clf = svm.SVC(kernel='rbf', gamma=0.6,  C=100)
clf.fit(x,y)
print('Accuracy = ', clf.score(x, y))

y_pred = clf.predict(x)
from sklearn import metrics
print(metrics.classification_report( y, y_pred) )

 为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

 4、将数据集拆分为训练集和测试集,在测试集上查看分类效果

from sklearn import svm
from sklearn import model_selection
x_train, x_test,  y_train, y_test = model_selection.train_test_split(x, y, test_size=0.2,random_state=1)
clf = svm.SVC(kernel='rbf',gamma=0.7, C=1)
clf.fit(x_train, y_train)
b = clf.score(x_train, y_train)
print("训练集准确率:",b)
a = clf.score(x_test, y_test)
print("测试集准确率:",a)

为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量 

 5、数据处理

from sklearn import preprocessing
from sklearn import model_selection
% 对不同方差的数据标准化
x_scale = preprocessing.scale(x)
%将标准化后的数据集拆分为训练集和测试集,在测试集上查看分类效果
from sklearn import svm
x_train, x_test,  y_train, y_test = model_selection.train_test_split(x_scale, y, test_size=0.2,random_state=1)
clf = svm.SVC(kernel='rbf',gamma=0.7, C=30)
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
a = clf.score(x_test, y_test)
print(a)
print(metrics.classification_report(y_test, y_pred))
print(metrics.confusion_matrix(y_test, y_pred))

为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量


3.使用scikit-learn建立随机森林回归模型预测葡萄酒质量(1-10之间)[“不可使用good_or_not”列]

step 1. 从文件中读入数据,进行预处理,将所有特征转换为数值型 

import numpy as np
import pandas as pd
filename='data\wine.csv'
data=pd.read_csv(filename,index_col='idx')
data.drop('good_or_not',axis=1,inplace=True)
x = data.drop('quality', axis=1).values.astype(float)
y = data['quality'].values.astype(float)

step 2. 从DataFrame对象中取出特征矩阵X和分类标签y,无需进行归一化处理

%划分测试集和训练集
from sklearn import model_selection
x_train, x_test, y_train, y_test = model_selection.train_test_split(x,y, test_size=0.3, random_state=1)

step 3. 使用随机森林算法训练集成分类器

参数n_ estimators和max_depth的设置直接影响模型的性能

且不同的数据集取值差别较大,通常通过搜索的方式找出合适的值

from sklearn.ensemble import RandomForestClassifier
%固定决策树个数,搜索最大深度max_depth在给定范围内的最优取值
%从1到10中探索最优深度
d_score = []
for i in range(1,10):
    RF = RandomForestClassifier(n_estimators=15, criterion='entropy', max_depth=i)
    RF.fit(x_train, y_train)
    d_score.append(RF.score(x_test, y_test))
    
depth = d_score.index(max(d_score)) #列表求最大值的索引
print(depth,d_score[depth])

为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

% 按最优深度,搜索最优决策树个树n_estimators
% 从1到21中探索最优决策树的数目
e_score = []
for i in range(1,21):
    RF = RandomForestClassifier(n_estimators=i, criterion='entropy', max_depth=depth)
    RF.fit(x_train, y_train)
    e_score.append(RF.score(x_test, y_test))
    
est = e_score.index(max(e_score))
print(est,e_score[est])

 为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

%双层搜索

scores = [] % 记录深度
pos = [] %记录决策树数目

for i in range(1, 10): %深度
    temp = [] 
    for j in range(1, 40): % 决策树数目
        RF = RandomForestClassifier(n_estimators=j, criterion='entropy', max_depth=i)
        RF.fit(x_train, y_train)
        temp.append(RF.score(x_test, y_test))
    scores.append(max(temp))% 存储这21个中表现最好的模型的scores
    pos.append(temp.index(max(temp))) % 存储表现最好的模型的决策树数目

max_scores = max(scores) % 找出每种深度下的所有模型的最好模型
si = scores.index(max(scores)) % 该最好模型对应的决策树的数目
depth = pos[si]
print(max_scores, depth)

 为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

总结

以上就是今天要讲的内容,本文仅仅简单介绍了使用SVM模型对葡萄酒的数据进行回归分析的使用,SVM的算法添加了限制条件,来保证尽可能减少不可分割的点的影响,使分割达到相对最优。文章来源地址https://www.toymoban.com/news/detail-424912.html

到了这里,关于为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    葡萄酒在人类历史中扮演着非常重要的角色,它能舒缓疲劳、减轻病痛、消毒杀菌、美容养颜等等直到19世纪晚期,葡萄酒都是西方医学中不可缺少的用品,适量饮用对人的身体会有益处。无论是用于交际会谈,还是滋身养颜,优良的葡萄酒因其独特的风味与绝佳的品质往往

    2024年02月04日
    浏览(57)
  • 数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目简介 2.1分析目标 2.2数据集介绍 2.3技术工具 3.算法理论 4.实验过程

    2024年02月03日
    浏览(45)
  • 6.1 葡萄酒评论分析报告

    任务描述 本关任务:编写程序,多维度分析葡萄酒数据。 第1关  葡萄酒评论分析报告——国家列表和平均分 代码如下: 第2关 葡萄酒评论分析报告——平均分排序和评分最高 代码如下: 第3关 葡萄酒评论分析报告——价格最高和葡萄酒评分 代码如下: 尝试静下心来做自

    2024年02月06日
    浏览(48)
  • 基于K近邻的葡萄酒质量检测项目

    💥 项目专栏:【机器学习项目实战案例目录】项目详解 + 完整源码 🌠 『精品学习专栏导航帖』 🐳

    2024年02月03日
    浏览(42)
  • 【数学建模】国赛真题分析 2012 A题 葡萄酒的评价

    优秀论文地址: 链接:https://pan.baidu.com/s/19WGpybgM6RncxTYhx61JRA?pwd=vl22 提取码:vl22 –来自百度网盘超级会员V6的分享 确定葡萄酒质量时一般是通过聘请一批有资质的评酒员进行品评。每个评酒员在对葡萄酒进行品尝后对其分类指标打分,然后求和得到其总分,从而确定葡萄酒的

    2024年02月12日
    浏览(50)
  • 仅记录我的第一次数学建模——葡萄酒的评价

    仅以此来记录我的数学建模课小组作业  2022.11.3周四运动会放假,终于有时间做数学建模啦(月底就要答辩了,今日数学建模小组作业进度2.6666%,  2022.11.23哈哈哈哈哈哈终于写完了,但! tm查重30% 要求20%,累了,改不动了,开摆(真服了,为啥找个负责有能力的队友比世界

    2024年02月12日
    浏览(42)
  • 2012年数学建模国赛A题(葡萄酒质量评价)优秀论文.doc

    本博客下载链接包含修改的word版本, 可免费下载阅览学习, 也可作为数学建模相关课程作业修改上交: 链接:https://pan.baidu.com/s/1JaNsp6aVhl0xLuESsKwv4Q?pwd=qtnc  提取码:qtnc 葡萄酒的评价 摘要      如今葡萄酒逐渐成为人们越来越喜爱的饮品。本文主要针对葡萄酒的评价问题,利用

    2024年02月11日
    浏览(48)
  • 使用matlab里的SVM进行数据分类预测

    在MATLAB中使用支持向量机(SVM)进行数据分类预测的示例代码如下: 该示例代码假设您已经拥有特征矩阵X和对应的标签向量Y。首先,将数据集划分为训练集和测试集。然后,使用 fitcsvm 函数建立支持向量机(SVM)模型,并设置相关参数,如核函数。接下来,使用训练好的模型对测

    2024年02月16日
    浏览(44)
  • 使用python中的SVM进行数据分类预测

    在Python中使用支持向量机(SVM)进行数据分类预测的示例代码如下: 该示例代码使用了 sklearn 库中的 SVC 类来构建支持向量机(SVM)模型。首先,将数据集划分为训练集和测试集;然后创建一个SVM模型,设置参数,如选择线性核函数;接下来使用训练集对模型进行训练;最后,

    2024年02月15日
    浏览(39)
  • 机器学习之SVM分类器介绍——核函数、SVM分类器的使用

    机器学习算法——KD树算法介绍以及案例介绍 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 一、SVM支持向量机介绍 1.1、SVM介绍 1.2、几种核函数简介 a、sigmoid核函数  b、非线性SVM与核函数 重要参数kernel作为SVC类最重要的参数之一,“kernel\\\"在skl

    2024年02月04日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包