十一、通过六个因素对织物起球等级进行预测

news2024/12/29 10:47:59

一、需求分析

根据之前做训练的模型,对不同等级的标准样卡进行测试
测试样本有48张,其中包括起球个数、起球总面积、起球最大面积、起球平均面积、对比度、光学体积六个指标,最终确定出织物的等级
数据集fiber.csv大致结构如下:
数据集是我自己测试收集的,这里就不公开分享了,个人数据,理解万岁
在这里插入图片描述
csv格式注意事项:
N,S,Max_s,Aver_s,C,V,Grade最后没有空格
27,111542.5,38299.5,4131.2,31.91,3559537.61,1(空格)1后面有个空格,要注意!!!

变量含义
N起球个数
S起球总面积
Max_s起球最大面积
Aver_s起球平均面积
C对比度
V光学体积
Grade最终评定等级

二、尝试多种方法去实现预测等级评定

1、导包

pip install scikit-learn 安装sklearn相关包

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
 
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
 
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import BernoulliNB
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import LinearSVC
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
 
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score

2、读取展示数据集

fiber = pd.read_csv("./fiber.csv")
fiber.head(15)

在这里插入图片描述

print(fiber)
"""
     N         S    Max_s    Aver_s      C           V  Grade
0   27  111542.5  38299.5   4131.20  31.91  3559537.61      1
1   27  110579.5  31220.0   3186.63  31.28  2690869.73      1
......
47   9   33853.0   6329.0   3761.44  41.17  1393863.42      4
"""

3、划分数据集

最后一列为结果,其余的六个因素为自变量

X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']

将数据集分为验证集和测试集两部分
random_state随机数种子,保证每次分割训练集和测试集都相同

X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

查看下shape值
训练集36个,测试集12个,总共也就48个数据

print(X_test.shape) #(36, 6)
print(y_train.shape) #(36,)
print(X_test.shape) #(12, 6)

4、不同算法拟合

①K近邻算法,KNeighborsClassifier()

n_neighbors:选取最近的点的个数
通过这4个数据来对其他的数据进行拟合

knn = KNeighborsClassifier(n_neighbors=4)

对训练集进行训练拟合

knn.fit(X_train,y_train)

对测试集X_test进行预测,得到预测结果y_pred

y_pred = knn.predict(X_test)

预测结果y_pred和正确的答案y_test进行对比,求均值mean,看下正确率accuracy

accuracy = np.mean(y_pred==y_test)
print(accuracy)

也可以看下最终的得分

score = knn.score(X_test,y_test)
print(score)

随便生成一条数据对模型进行测试
16,18312.5,6614.5,2842.31,25.23,1147430.19,2
最终的等级为2
在这里插入图片描述

test = np.array([[16,18312.5,6614.5,2842.31,25.23,1147430.19]])
prediction = knn.predict(test)
print(prediction)
"""
[2]
"""

这是从训练集中抽取的,实际肯定不能这样干,这里只是在进行测试而已。

K近邻算法完整代码

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score


fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

knn = KNeighborsClassifier(n_neighbors=4)
knn.fit(X_train,y_train)
y_pred = knn.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = knn.score(X_test,y_test)#得分
print(accuracy)
print(score)

#测试
test = np.array([[16,18312.5,6614.5,2842.31,25.23,1147430.19]])#随便找的一条数据
prediction = knn.predict(test)#带入数据,预测一下
print(prediction)

②逻辑回归算法,LogisticRegression()

实例化逻辑回归对象

lr = LogisticRegression()

将训练集传入,进行训练拟合

lr.fit(X_train,y_train)#模型拟合

对测试集X_test进行预测,得到预测结果y_pred

y_pred = lr.predict(X_test)#模型预测结果

预测结果y_pred和正确的答案y_test进行对比,求均值mean,看下正确率accuracy

accuracy = np.mean(y_pred==y_test)
print(accuracy)

也可以看下最终的得分

score = lr.score(X_test,y_test)
print(score)

随便生成一条数据对模型进行测试
20,44882.5,10563,5623.88,27.15,3053651.65,1
最终的等级为1
在这里插入图片描述

test = np.array([[20,44882.5,10563,5623.88,27.15,3053651.65]])#随便找的一条数据,正确等级为1
prediction = lr.predict(test)#带入数据,预测一下
print(prediction)
"""
[1]
"""

这是从训练集中抽取的,实际肯定不能这样干,这里只是在进行测试而已。

逻辑回归完整代码

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression


fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

lr = LogisticRegression()
lr.fit(X_train,y_train)#模型拟合
y_pred = lr.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = lr.score(X_test,y_test)#得分
print(accuracy)
print(score)

test = np.array([[20,44882.5,10563,5623.88,27.15,3053651.65]])#随便找的一条数据
prediction = lr.predict(test)#带入数据,预测一下
print(prediction)

③线性支持向量机 ,LinearSVC()

实例化线性支持向量机对象

lsvc = LinearSVC()

将训练集传入,进行训练拟合

lsvc.fit(X_train,y_train)#模型拟合

对测试集X_test进行预测,得到预测结果y_pred

y_pred = lsvc.predict(X_test)#模型预测结果

预测结果y_pred和正确的答案y_test进行对比,求均值mean,看下正确率accuracy

accuracy = np.mean(y_pred==y_test)
print(accuracy)

也可以看下最终的得分

score = lsvc.score(X_test,y_test)
print(score)

随便生成一条数据对模型进行测试
20,55997.5,17644.5,2799.88,8.58,480178.56,2
最终的等级为2
在这里插入图片描述

test = np.array([[20,55997.5,17644.5,2799.88,8.58,480178.56]])#随便找的一条数据
prediction = lsvc.predict(test)#带入数据,预测一下
print(prediction)
"""
[2]
"""

这是从训练集中抽取的,实际肯定不能这样干,这里只是在进行测试而已。

线性支持向量机完整代码

from sklearn.svm import LinearSVC
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

lsvc = LinearSVC()
lsvc.fit(X_train,y_train)#模型拟合
y_pred = lsvc.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = lsvc.score(X_test,y_test)#得分
print(accuracy)
print(score)

test = np.array([[20,55997.5,17644.5,2799.88,8.58,480178.56]])#随便找的一条数据
prediction = lsvc.predict(test)#带入数据,预测一下
print(prediction)

④支持向量机,SVC()

实例化支持向量机对象

svc = SVC()

将训练集传入,进行训练拟合

svc.fit(X_train,y_train)#模型拟合

对测试集X_test进行预测,得到预测结果y_pred

y_pred = svc.predict(X_test)#模型预测结果

预测结果y_pred和正确的答案y_test进行对比,求均值mean,看下正确率accuracy

accuracy = np.mean(y_pred==y_test)
print(accuracy)

也可以看下最终的得分

score = svc.score(X_test,y_test)
print(score)

随便生成一条数据对模型进行测试
23,97215.5,22795.5,2613.09,29.72,1786141.62,1
最终的等级为1
在这里插入图片描述

test = np.array([[23,97215.5,22795.5,2613.09,29.72,1786141.62]])#随便找的一条数据
prediction = svc.predict(test)#带入数据,预测一下
print(prediction)
"""
[1]
"""

这是从训练集中抽取的,实际肯定不能这样干,这里只是在进行测试而已。

支持向量机完整代码

from sklearn.svm import SVC
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

svc = SVC(gamma='auto')
svc.fit(X_train,y_train)#模型拟合
y_pred = svc.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = svc.score(X_test,y_test)#得分
print(accuracy)
print(score)

test = np.array([[23,97215.5,22795.5,2613.09,29.72,1786141.62]])#随便找的一条数据
prediction = svc.predict(test)#带入数据,预测一下
print(prediction)

⑤决策树,DecisionTreeClassifier()

发现没,前四个方法步骤几乎都是一样的,只不过实例化的对象不同,仅此而已,至此就不再赘述了。

随便生成一条数据对模型进行测试
11,99498,5369,9045.27,28.47,3827588.56,4
最终的等级为4
在这里插入图片描述

决策树完整代码

from sklearn.tree import DecisionTreeClassifier
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

dtc = DecisionTreeClassifier()
dtc.fit(X_train,y_train)#模型拟合
y_pred = dtc.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = dtc.score(X_test,y_test)#得分
print(accuracy)
print(score)

test = np.array([[11,99498,5369,9045.27,28.47,3827588.56]])#随便找的一条数据
prediction = dtc.predict(test)#带入数据,预测一下
print(prediction)

⑥高斯贝叶斯,GaussianNB()

随便生成一条数据对模型进行测试
14,160712,3208,3681.25,36.31,1871275.09,3
最终的等级为3
在这里插入图片描述

高斯贝叶斯完整代码

from sklearn.naive_bayes import GaussianNB
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

gnb = GaussianNB()
gnb.fit(X_train,y_train)#模型拟合
y_pred = gnb.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = gnb.score(X_test,y_test)#得分
print(accuracy)
print(score)

test = np.array([[14,160712,3208,3681.25,36.31,1871275.09]])#随便找的一条数据
prediction = gnb.predict(test)#带入数据,预测一下
print(prediction)

⑦伯努利贝叶斯,BernoulliNB()

随便生成一条数据对模型进行测试
18,57541.5,10455,2843.36,30.68,1570013.02,2
最终的等级为2
在这里插入图片描述

伯努利贝叶斯完整代码

from sklearn.naive_bayes import BernoulliNB
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

bnb = BernoulliNB()
bnb.fit(X_train,y_train)#模型拟合
y_pred = bnb.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = bnb.score(X_test,y_test)#得分
print(accuracy)
print(score)

test = np.array([[18,57541.5,10455,2843.36,30.68,1570013.02]])#随便找的一条数据
prediction = bnb.predict(test)#带入数据,预测一下
print(prediction)

⑧多项式贝叶斯,MultinomialNB()

随便生成一条数据对模型进行测试
9,64794,5560,10682.94,38.99,3748367.45,4
最终的等级为4
在这里插入图片描述

多项式贝叶斯完整代码

from sklearn.naive_bayes import MultinomialNB
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

mnb = MultinomialNB()
mnb.fit(X_train,y_train)#模型拟合
y_pred = mnb.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = mnb.score(X_test,y_test)#得分
print(accuracy)
print(score)

test = np.array([[9,64794,5560,10682.94,38.99,3748367.45]])#随便找的一条数据
prediction = mnb.predict(test)#带入数据,预测一下
print(prediction)

最终通过调节参数以及优化,确定使用决策树对本样本进行等级预测

5、模型保存与加载

这里以决策树算法为例

训练完成之后的模型通过joblib.dump(dtc, './dtc.model')进行保存
dtc为模型实例化对象
./dtc.model为保存模型名称和路径

通过dtc_yy = joblib.load('./dtc.model')加载模型

完整代码

from sklearn.tree import DecisionTreeClassifier
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import joblib

fiber = pd.read_csv("./fiber.csv")
# 划分自变量和因变量
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, Y, random_state=0)

dtc = DecisionTreeClassifier()
dtc.fit(X_train,y_train)#模型拟合
joblib.dump(dtc, './dtc.model')#保存模型
y_pred = dtc.predict(X_test)#模型预测结果
accuracy = np.mean(y_pred==y_test)#准确度
score = dtc.score(X_test,y_test)#得分
print(accuracy)
print(score)


dtc_yy = joblib.load('./dtc.model')
test = np.array([[11,99498,5369,9045.27,28.47,3827588.56]])#随便找的一条数据
prediction = dtc_yy.predict(test)#带入数据,预测一下
print(prediction)

保存的模型如下:在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/476980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务保护 笔记分享【黑马笔记】

微服务保护 1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I&#xff…

Notion——构建个人知识库

前言 使用Notion快三年了,它All in one的理念在使用以后确实深有体会,一直想找一个契机将这个软件分享给大家,这款笔记软件在网上已经有很多的教程了,所以在这里我主要想分享框架这方面给大家,特别对于学生党、准研究生…

【Java笔试强训 12】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥二进制插…

深圳雷龙SD NAND的存储应用方案

前言: 很感谢深圳雷龙发展有限公司为博主提供的两片SD NAND的存储芯片,在这里博主记录一下自己的使用过程以及部分设计。 深入了解该产品: 拿到这个产品之后,我大致了解了下两款芯片的性能。CSNP4GCR01-AMW是一种基于NAND闪存和SD控制器的4G…

paddle 52 在paddleseg中实现cutmix数据增强方式

CutMix是一种极其有效的数据增强方式,尤其是在遥感影像语义分割中。这主要是因为遥感影像标注成本较大,在实际业务中通常都是采用局部标注的方式进行标注,如下图所示仅对标注成本较小的区域进行标注,而对标注成本较大的地方进行忽略。这使得标签数据中各种类别边界较少(例…

【Python零基础学习入门篇③】——第三节:Python的字符串类型

⬇️⬇️⬇️⬇️⬇️⬇️ ⭐⭐⭐Hello,大家好呀我是陈童学哦,一个普通大一在校生,请大家多多关照呀嘿嘿😁😊😘 🌟🌟🌟技术这条路固然很艰辛,但既已选择&…

VS+Qt+C++银行排队叫号系统

程序示例精选 VSQtC银行排队叫号系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<VSQtC银行排队叫号系统>>编写代码&#xff0c;带用户登录&#xff0c;管理员登录&#xff…

Mysql当中Json相关的函数详解

目录 一、前言二、创建JSON文本的函数2.1.JSON_ARRAY&#xff08;转换json数组&#xff09;2.2.JSON_OBJECT&#xff08;转换json对象&#xff09;2.3.JSON_QUOTE&#xff08;转义字符串&#xff09; 三、搜索JSON文本的函数3.1.JSON_CONTAINS&#xff08;json当中是否包含指定…

thinkphp6结合layui增删改查综合案列

文章目录 技术栈实现代码实现数据库 本案例适合新手&#xff0c;特别是杠刚入门thinkphp和layui&#xff0c;但又不是特别熟悉这类 主要实现登录退出功能&#xff0c;用户模块的增删改查功能&#xff0c;分页功能是layui表单自带功能 效果图 左侧的菜单栏我没有写对应的页面&am…

学习记录:2023.4.28

2023.4.28 实习学习记录 Vue1、SVG学习&#xff1a;2、watch监听&#xff1a;3、< g>标签&#xff1a; Vue 1、SVG学习&#xff1a; 百度百科&#xff1a;SVG是可缩放矢量图形&#xff0c;是基于可扩展标记语言(标准通用标记语言的子集)&#xff0c;用于描述二维矢量图…

二、C++、STL标准模板库和泛型编程 ——适配器、补充(侯捷)

侯捷 C八部曲笔记汇总 - - - 持续更新 ! ! ! 一、C 面向对象高级开发 1、C面向对象高级编程(上) 2、C面向对象高级编程(下) 二、STL 标准库和泛型编程 1、分配器、序列式容器 2、关联式容器 3、迭代器、 算法、仿函数 4、适配器、补充 三、C 设计模式 四、C 新标准 五、C 内存管…

时序预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络时间序列预测

时序预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络时间序列预测 目录 时序预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-CNN-LSTM贝叶斯优…

c++标准模板(STL)(std::array)(四)

定义于头文件 <array> template< class T, std::size_t N > struct array;(C11 起) std::array 是封装固定大小数组的容器。 此容器是一个聚合类型&#xff0c;其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数…

MySQL 高可用实战

文章目录 前言实现思路环境准备一、实现MySQL高可用1.1 修改配置文件1.2 MySQL监控脚本1.4 重启keepalived1.5 查看虚拟ip 二、高可用验证2.1 模拟宕机2.2 查看虚拟ip2.3 连接MySQL2.4 恢复主机2.5 查看虚拟ip 总结 前言 请各大网友尊重本人原创知识分享&#xff0c;谨记本人博…

基于脉搏波的疾病诊断:准确率接近100%的未来前景?

脉搏波分析作为一种无创诊断方法&#xff0c;在糖尿病诊断领域具有巨大潜力。某些研究表明&#xff0c;基于脉搏波的诊断方法在准确性方面可能优于传统血糖检测方法。然而&#xff0c;在将这种方法应用于临床之前&#xff0c;我们需要关注其稳定性、易用性、成本效益等因素。 首…

老胡的周刊(第089期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 MOSS[2] 来自复旦大学的开源工具增强型会话语…

翻译: 迁移学习和微调 Transfer learning fine-tuning

1. 介绍 迁移学习包括获取在一个问题上学到的特征&#xff0c;并将它们用于一个新的类似问题。例如&#xff0c;已经学会识别浣熊的模型的特征可能有助于启动旨在识别狸猫的模型。 迁移学习通常用于您的数据集数据太少而无法从头开始训练全尺寸模型的任务。 在深度学习的背景…

AI模型推理(1)——入门篇

前言 本文主要介绍AI模型推理的相关基础概念&#xff0c;为后续云原生模型推理服务的学习做准备。 初识模型部署 对于深度学习模型来说&#xff0c;模型部署指让训练好的模型在特定环境中运行的过程。相比于常规的软件部署&#xff0c;模型部署会面临更多的难题&#xff1a; …

SPI机制详细讲解

文章目录 SPI机制案例分析建立DriverManager建立MysqlDriver来实现扩展建立OracleDriver来实现扩展测试spitest 源码分析ServiceLoader类的结构reload加载类LazyIterator类parse解析URL对象方法parseLine方法 SPI机制 SPI &#xff0c;全称为 Service Provider Interface&…

Bridge模式如何配置

Bridge模式案例&#xff08;一&#xff09; 基于Docker引擎启动Nginx WEB容器&#xff0c;默认以Bridge方式启动Docker容器&#xff0c;会动态DHCP给Docker容器分配IP、网关等信息&#xff0c;操作指令如下&#xff1a; 查看镜像列表 docker images#运行新的Nginx容器 dock…