分类分析模型

目录

1.目的

2.内容

2.1决策树分类模型

2.2K近邻分类模型

3.代码实现

3.1分类分析模型

3.2K近邻分类模型


1.目的

  1. 掌握利用Python语言及相关库编写决策树分类分析模型的方法,所构建的决策树能够对给定的数据集进行分类。
  2. 掌握利用Python语言及相关库编写K近邻分类分析模型的方法。
  3. 将分类结果与决策树的分类结果和构造算法过程进行比较。

2.内容

2.1决策树分类模型

1.数据集介绍

2.2K近邻分类模型

1.数据集介绍

我们通过构建一个KNN分类器,实现对鸢尾花数据集进行分类。

3.代码实现

3.1分类分析模型

1.数据集介绍

import csv
#定义数据
data = [['RID', 'age', 'income', 'student', 'credit_rating', 'class_buys_computer'],['1', 'youth', 'high', 'no', 'fair', 'no'],['2', 'youth', 'high', 'no', 'excellent', 'no'],['3', 'middle_aged', 'high', 'no', 'fair', 'yes'],['4', 'senior', 'medium', 'no', 'fair', 'yes'],['5', 'senior', 'low', 'yes', 'fair', 'yes'],['6', 'senior', 'low', 'yes', 'excellent', 'no'],['7', 'middle_aged', 'low', 'yes', 'excellent', 'yes'],['8', 'youth', 'medium', 'no', 'fair', 'no'],['9', 'youth', 'low', 'yes', 'fair', 'yes'],['10', 'senior', 'medium', 'yes', 'fair', 'yes'],['11', 'youth', 'medium', 'yes', 'excellent', 'yes'],['12', 'middle_aged', 'medium', 'no', 'excellent', 'yes'],['13', 'middle_aged', 'high', 'yes', 'fair', 'yes'],['14', 'senior', 'medium', 'no', 'excellent', 'no'],
]
#打开文件以写入数据,使用'newline=''来避免额外的空行
with open('AllElectronics.csv', 'w', newline='') as csvfile:writer = csv.writer(csvfile)for row in data:writer.writerow(row)

2.代码实现

(1)导入库

from graphviz import Source
import pandas as pd
from sklearn import tree
from sklearn.feature_extraction import DictVectorizer
from sklearn import preprocessing

(2)读取数据并进行相应的处理

data = pd.read_csv('AllElectronics.csv')
data = pd.DataFrame(data)valuedata = data.values
header = list(data.columns)[1:6]featureList = []
labelList = data['class_buys_computer']
for value in valuedata:featureDict = {}for i in range(4):featureDict[header[i]]=value[i+1]
featureList.append(featureDict)

(3)建立决策树

vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)clf = tree.DecisionTreeClassifier(criterion='entropy')vec.get_feature_names()
print(vec.get_feature_names());

(4)生成决策树图形

clf = clf.fit(dummyX, dummyY)
print(clf)graph = Source(tree.export_graphviz(clf, feature_names=vec.get_feature_names(),out_file=None))
print(graph)
3.2K近邻分类模型

1.数据集介绍

2.代码实现

(1)导入库

(2)加载数据

import numpy as up
import  pandas as  pddataset = pd.read_csv('E:\大数据挖掘/Iris.csv')
dataset.shape
print(dataset)

(3)数据预处理

(4)数据集切分:训练集和测试集

dataset.describe()
dataset.groupby('Species').size()feature_columns = ['SepalLengthCm','SepalWidthCm','PetalLengthCm','PetalWidthCm']
X = dataset[feature_columns].values
y = dataset['Species'].values
le = LabelEncoder()
y = le.fit_transform(y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
plt.figure(figsize=(10,6))

(5)数据可视化探索

import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
import matplotlib.pylab as plt
import seaborn as sns
from pandas.plotting import parallel_coordinates
import matplotlib.pyplot as pltdataset = pd.read_csv('E:\大数据挖掘/iris.csv')dataset.shape
dataset.describe()
dataset.groupby('Species').size()feature_columns = ['SepalLengthCm','SepalWidthCm','PetalLengthCm','PetalWidthCm']
X = dataset[feature_columns].values
y = dataset['Species'].valuesle = LabelEncoder()
y = le.fit_transform(y)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)plt.figure(figsize=(10,6))parallel_coordinates(frame=dataset, class_column="Species")
plt.title('Parallel Coordinates Plot', fontsize=15, fontweight='bold')
plt.xlabel('Features', fontsize=10)
plt.ylabel('Features values', fontsize=10)
plt.legend(loc=1, prop={'size': 10}, frameon=True, shadow=True, facecolor='white', edgecolor='black')
plt.show()

(6)实现KNN分类模型

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix,accuracy_score
from sklearn.model_selection import cross_val_scoreclassifier = KNeighborsClassifier(n_neighbors=3)classifier.fit(X_train, y_train)y_pred = classifier.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
cm
print(cm)
accuracy=accuracy_score(y_test, y_pred)*100
print('模型准确率为:'+str(round(accuracy, 2))+'%.')

(7)使用交叉验证进行参数优化

k_list=list=(range(1,50,2))#三个参数代表range;开始,结束,步长
cv_scores=[]for k in k_list:knn=KNeighborsClassifier(n_neighbors=k)scores=cross_val_score(knn, X_train, y_train, cv=10, scoring='accuracy')cv_scores.append(scores.mean())

(8)可视化结果

(9)得出最优值

MSE=[1-x for x in cv_scores]plt.figure()
plt.figure(figsize=(10, 6))plt.title('the optimal number of neighbors', fontsize=15, fontweght='bold')plt.xlabel('Number of neighbors K', fontsize=10)sns.set_style("whitegrid")plt.plot(k_list, MSE)
plt.sho
best_k=k_list[MSE.index(min(MSE))]
print("最优近邻数K为:%d"%best_k)

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

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

相关文章

Android多线程:Handler runOnUiThread 异步消息处理机制

目录 一,Android中的多线程问题 1.模拟耗时工作 2.Android开启子线程 二,在子线程中更新UI 1.异步消息处理机制 Handler 2.使用runOnUiThread更新UI 一,Android中的多线程问题 Android用户界面是与用户交互的接口,对于用户的…

免费ssl通配符证书申请教程

在互联网安全日益受到重视的今天,启用HTTPS已经成为网站运营的基本要求。它不仅保障用户数据传输的安全,提升搜索引擎排名,还能增强用户对网站的信任。通配符证书是一种SSL/TLS证书,用于同时保护一个域名及其所有下一级子域名的安…

CSS基础:display的3个常见属性值详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具…

Flutter第九弹 构建列表元素间距

目标: 1)Flutter Widget组件之间间距怎么表示? 2)列表怎么定义子项之间间距? 一、间距的表示组件 列表组件的间距一般采用固定间距,间距占据可见的空间。 已经使用的表示间距的组件 Spacer&#xff1a…

MATLAB实现遗传算法优化公铁水联运

公铁水联运是运输行业的经典问题, 常用智能算法进行优化,比如遗传算法. 公铁水多式联运优化的数学模型如下: 1.模型简介 公铁水多式联运优化问题可以抽象为一个网络流问题,其中节点代表不同的运输方式转换点(如公路、铁路、水运的交汇点&a…

x264编码器 MV 预测

H264 编码标准中MV预测的目的 每个分割 MV 的编码需要相当数目的比特,特别是使用小分割尺寸时。为减少传输比特数,可利用邻近分割的 MV 较强的相关性,MV 可由邻近已编码分割的 MV 预测而得。预测矢量 MVp 基于已计算 MV 和 MVD(预测与当前的差异)并被编码和传送。MVp 则取决…

【C++航海王:追寻罗杰的编程之路】C++11(上)

目录 1 -> C11简介 2 -> 统一的列表初始化 2.1 -> {}初始化 2.2 -> std::initializer_list 3 -> 声明 3.1 -> auto 3.2 -> decltype 3.3 -> nullptr 1 -> C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C…

解决跨域和https不能访问的问题。

本地安装了项目,是一键安装的,安装之后还是apache的web服务器,有个视频服务用的是https的服务,要对这个项目进行二次开发,本地调用没问题,可是别人已调用就跨域。只能本地访问。 现在有两个问题:1.解决跨域问题 2.还要解决https访问的问题。 解决思路,用nginx 的ssl证…

网络编程套接字(三)之TCP服务器简单实现

目录 一、服务端TcpServer 1、tcp_server.hpp 2、tcp_server.cc 二、客户端TcpClient tcp_client.cc 三、服务器和客户端进行通信 四、完整代码 一、服务端TcpServer 首先我们需要对服务端进行封装。我们需要的成员变量有IP地址,端口号port,以及监…

CentOS7下安装mysql8或者mysql5.7

mysql8 1、下载 访问mysql官网下载mysql8软件包 https://dev.mysql.com/downloads/mysql/ 选择相应的版本如:RPM Bundle mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar RPM Bundle 8.0.33 下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.…

Android的一些总结

先打开自定义的app显示欢迎->消失 打开桌面应用程序->在桌面应用程序中也要能一键启动打开视频播放的app 桌面应用程序广播接收者进行监听,然后打开服务/activity是可行的。 ########################## 日志,调试: Usb 无线 串口…

Vue3从入门到实战:深度了解相关API

shallowRef 作用:创建一个响应式数据,但只对顶层属性进行响应式处理。 用法: let myVar shallowRef(initialValue); 特点:只跟踪引用值的变化,不关心值内部的属性变化。 shallowReactive 作用:创建一个…

【MySQL】表的基本约束

文章目录 1、约束类型1.1NOT NULL约束1.2UNIQUE:唯一约束1.3DEFAULT:默认值约束1.4PRIMARY KEY:主键约束1.5FOREIGN KEY:外键约束 2、表的设计2.1一对一2.2一对多2.3多对多 1、约束类型 关键字解释NOT NULL指示某列不能存储NULL值…

在线编辑器 CodeMirror

如何优雅的在网页显示代码 如果开发在线编辑器 引入资源&#xff1a; <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.60.0/codemirror.min.css"><script src"https://cdnjs.cloudflare.com/ajax/libs/c…

力扣经典150题第三十题:长度最小的子数组

目录 力扣经典150题解析之三十&#xff1a;长度最小的子数组1. 介绍2. 问题描述3. 示例4. 解题思路方法一&#xff1a;滑动窗口 5. 算法实现6. 复杂度分析7. 测试与验证测试用例设计测试结果分析 8. 进阶9. 总结10. 参考文献感谢阅读 力扣经典150题解析之三十&#xff1a;长度最…

Web前端 Javascript笔记6

BOM 前面的笔记讲的都是DOM&#xff08;文档对象模型&#xff09;&#xff0c;DOM几乎被所有浏览器支持&#xff0c;是DOM的作用为操作HTML文档的重要手段。利用DOM可以对HTML文档中的所有元素&#xff0c;节点进行获取与访问&#xff0c;对标签属性与样式进行设置。 下面是一…

OpenHarmony鸿蒙南向开发案例:【智能窗户通风设备】

样例简介 本文档介绍了安全厨房案例中的相关智能窗户通风设备&#xff0c;本安全厨房案例利用轻量级软总线能力&#xff0c;将两块欧智通V200Z-R/BES2600开发板模拟的智能窗户通风设备和燃气告警设备组合成。当燃气数值告警时&#xff0c;无需其它操作&#xff0c;直接通知软总…

Targeted influence maximization in competitive social networks

abstract 利用口碑效应的广告对于推销产品是相当有效的。在过去的十年中&#xff0c;人们对营销中的影响力最大化问题进行了深入的研究。影响力最大化问题旨在将社交网络中的一小群人识别为种子&#xff0c;最终他们将引发网络中最大的影响力传播或产品采用。在网络营销的实际场…

C++ 继承(一)

一、继承的概念 继承是面向对象编程中的一个重要概念&#xff0c;它指的是一个类&#xff08;子类&#xff09;可以从另一个类&#xff08;父类&#xff09;继承属性和方法。子类继承父类的属性和方法后&#xff0c;可以直接使用这些属性和方法&#xff0c;同时也可以在子类中…

DLT 直接线性变换

DLT 直接线性变换 对于单应变换 x i ′ H x i x_i^{\prime}Hx_i xi′​Hxi​&#xff0c;易知两图中对应的特征点&#xff0c;如何找出所需要的 H H H​&#xff0c;为了解决这个问题&#xff0c;可以采用DLT算法 原理 其中采用Least Squares Error去拟合 其中目标是获得最佳…