一、需求分析

根据之前做训练的模型,对不同等级的标准样卡进行测试
测试样本有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 snsfrom sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_splitfrom 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 DecisionTreeClassifierfrom 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_scorefiber = 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 LogisticRegressionfiber = 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_splitfiber = 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_splitfiber = 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_splitfiber = 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_splitfiber = 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_splitfiber = 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_splitfiber = 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 joblibfiber = 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)

保存的模型如下:

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

  1. wifi网速慢的六个因素

    很多人遇到WiFi会出现时快时慢的情况,真是让人抓狂,为什么自己的WiFi会那么慢呢?接下来小编就告诉大家wifi网速慢的原因. WiFi速度之所以没有达到大家的期望,跟这六个因素有关. 1.WiFi ...

  2. 天猫店铺介绍,影响天猫店铺转让价格的六个因素

    天猫店的挂售价格为什么往往比其他网店店更高呢?实际上一是天猫入驻的难度大,二是天猫对某些类目停止招商,三是天猫对入驻的产品质量要求更高.想要通过申请成功入驻天猫着实不易,于是更多的创业者通过天猫店铺转 ...

  3. 自动化设计的人为因素模型中的自动化等级

    为什么我们可以考虑将婴儿和洗澡水一起倒掉 本文回应了卡贝尔(Kaber)对自动化等级(LOA)框架的经验基础和设计效用的思考.我们讨论了在复杂工作环境中支持设计决策的现有人类性能数据的适用性.我们就为 ...

  4. 【十六】 H.266/VVC | VVC中帧间预测技术详细总结 | 所有帧间预测技术代码汇总

    前言 ​ 帧间预测是影响视频编码性能的关键环节之一,H.266/VVC帧间预测在传统只能应对简单的平移运动的基础上,采用了仿射运动模型,可以描述更加复杂的缩放.旋转等运动.为了更好的发挥合并模式(Me ...

  5. java计算圆锥体积_六年级:美妙数学之“球的体积计算”(0430六)

    美妙数学天天见,每天进步一点点.亲爱的小朋友,你好,我是朱乐平名师工作站的叶学品老师.今天向你介绍球的体积计算. 同学们,我们学过求一个物体的体积的一般方法是排水法.同学们肯定很好奇,球体能不能和圆柱 ...

  6. dvwa详解_DVWA(六):XSSReflected 反射型XSS全等级详解

    XSS 概念: 由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击. XSS类型: Reflected(反射型):只是简单的 ...

  7. dvwa详解_DVWA(六):XSS-Reflected 反射型XSS全等级详解

    XSS 概念: 由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击. XSS类型: Reflected(反射型):只是简单的 ...

  8. opencv学习笔记六十三:基于CNN的性别、年龄预测

    来自于2015年CVPR的一篇paper<Age and Gender Classification using Convolutional Neural Networks>. Paper ...

  9. 谷哥学术2022年资源分享下载列表

    资源名称 下载地址 关键词 ETC 代扣调频申请必读 - 微信支付.pdf https://download.csdn.net/download/tysonchiu/80934823 微信/技术文档 ...

最新文章

  1. NetBeans 时事通讯(刊号 # 124 - Nov 11, 2010)
  2. hibernate数据类型与OR映射
  3. RabbitMQ系列教程之四:路由(Routing)
  4. r3 4300u r5 u_R5刀粒
  5. mysql 走索引 很慢_MySQL优化:为什么SQL走索引还那么慢?
  6. 基于KMeans的指数择时策略
  7. 计算机音乐的制作流程,Premiere制作音乐电子相册的方法和流程 计算机类数媒...
  8. AHRS互补滤波(Mahony)算法及开源代码
  9. 流行技术产生的根源-阿朱吕建伟的个人观察
  10. 聊聊旷厂黑科技 | 更真切感受影像世界的美好,旷视实时双超AI算法还原你的“夏日回忆”...
  11. Serialize Your Deck with Positron [XML Serialization, XSD, C#]
  12. 实例学习Ansible系列:颜色与设定
  13. 如何判断2个线段相交
  14. node+express实现文件上传功能
  15. 小程序端接入企微客服 【微信客服】支持接入企微客服功能
  16. [APIO2018] New Home 新家
  17. 中专计算机教研组活动总结,教研活动总结(精选6篇)
  18. 推荐一款可自动即时保存备忘内容的电脑记事本软件
  19. 12x12怎么速算_备考 | 资料分析中的乘法速算怎么做?
  20. 自费访问学者申请需要哪些材料?

热门文章

  1. 使用baidu的api完成汉译英功能
  2. 用python画烟花简单画法_python实现烟花小程序
  3. AndroidUSB热敏打印机使用动态申请权限绕过系统权限对话框
  4. java parcelable list_Kotlin parcelable和arrayList of parcelables
  5. linux添加ipv6静态路由命令,Debian下配置IPV6和静态路由
  6. Mybatis注解实现模糊查询
  7. C语言中的malloc与free函数
  8. 基于社区划分和用户相似度的好友推荐
  9. 摄影基础教程:第一章:照相机
  10. 计算机视觉系列-轻松掌握 MMDetection 中 全景分割算法 MaskFormer(一)