分类分析模型

目录

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  pd

dataset = 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 plt



dataset = 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'].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))

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_score

classifier = 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.mfbz.cn/a/558791.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab学习003-绘制由差分方程表示的离散系统图像

目录 1,题目 2,使用函数求解差分方程 1)基础知识 ①filter函数和impz函数 ②zeros函数 ☀ 2)绘制图像 ​☀ 3)对应代码 如果连简单的信号都不会的,建议先看如下文章👇,之…

2024华中杯C题光纤传感器平面曲线重建原创论文分享

大家好,从昨天肝到现在,终于完成了2024华中杯数学建模C题的完整论文啦。 给大家看一下目录吧: 目录 摘 要: 10 一、问题重述 12 二.问题分析 13 2.1问题一 13 2.2问题二 14 2.3问题三 14 三、模型假设 15 四、…

一文学会Amazon transit GateWay

这是一个中转网关,使用时候需要在需要打通的VPC内创建一个挂载点,TGW会管理一张路由表来决定流量的转发到对应的挂载点上。本质上是EC2的请求路由到TGW,然后在查询TGW的路由表来再来决定下一跳,所以需要同时修改VPC 内子网的路由表…

【深度学习实战(10)】图像推理之预处理

一、预处理流程 在把一张图像送入模型进行推理时,需要先进行预处理,预处理流程包括: (1)读取图像 (2)尺寸调整,letter_box(不失真) (3&#xff0…

从 Elastic 的 Go APM 代理迁移到 OpenTelemetry Go SDK

作者:来自 Elastic Damien Mathieu 正如我们之前所分享的,Elastic 致力于帮助 OpenTelemetry(OTel)取得成功,这意味着在某些情况下构建语言 SDK 的分发版本。 Elastic 在观察性和安全数据收集方面战略性地选择了 OTel…

【Win】怎么下载m3u8视频\怎么通过F12开发人员工具获取视频地址\怎么下载完整的.ts格式视频

怎么下载m3u8视频?首先通过浏览器本地的开发人员工具,获取m3u8的地址,然后再通过第三方下载工具下载,此处以N_m3u8DL-CLI_v3.0.2为例 如下图的步骤,即可获取到视频的m3u8地址 打开N_m3u8DL-CLI_v3.0.2,粘贴…

JAVA 线程状态

一、简介 每一个java线程都会有六种状态,即:NEW,RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED等。这些线程状态是JVM的线程状态,并不映射操作系统的线程状态。可以通过t1.getState().toString()获取线程状态。 1、NE…

数据结构(顺序队列 循环队列

目录 1. 讲解&#xff1a;2. C代码实现&#xff1a;小结&#xff1a; 1. 讲解&#xff1a; 2. C代码实现&#xff1a; #include <stdlib.h> #include <iostream>using namespace std;#define MaxSize 10 #define ElemType inttypedef struct {ElemType data[MaxSi…

JavaWeb--06Vue组件库Element

Element 1 Element组件的快速入门1.1 Table表格 1 Element组件的快速入门 https://element.eleme.cn/#/zh-CN Element是饿了么团队开发的 接下来我们来学习一下ElementUI的常用组件&#xff0c;对于组件的学习比较简单&#xff0c;我们只需要参考官方提供的代码&#xff0c;然…

2010年认证杯SPSSPRO杯数学建模B题(第一阶段)交通拥堵问题全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 交通拥堵问题 B题 Braess 悖论 原题再现&#xff1a; Dietrich Braess 在 1968 年的一篇文章中提出了道路交通体系当中的Braess 悖论。它的含义是&#xff1a;有时在一个交通网络上增加一条路段&#xff0c;或者提高某个路段的局部通行能力&a…

【Java框架】SpringMVC(二)——SpringMVC数据交互

目录 前后端数据交互RequestMapping注解基于RequestMapping注解设置接口的请求方式RequestMapping注解的常用属性一个方法配置多个接口method属性params属性headers属性consumes属性produces属性 SpringMVC中的参数传递默认单个简单参数默认多个简单参数默认参数中有基本数据类…

关基网络战时代,赛宁网安电力网络攻防靶场全面提升电网安全防护力

随着网络空间成为与陆地、海洋、天空、太空同等重要的人类活动新领域&#xff0c;自网络空间向物理电网发起攻击&#xff0c;破坏电力等国家关键基础设施成为当前大国博弈、大规模战争的重要手段和常态进攻形式。同时&#xff0c;新型电力系统建设发展驱动电力系统形态和控制方…

鸢尾花数据集的KNN探索与乳腺癌决策树洞察

鸢尾花数据集的KNN探索与乳腺癌决策树洞察 今天博主做了这个KNN和决策树的实验。 一.数据集介绍 介绍一下数据集&#xff1a; 威斯康星州乳腺癌数据集&#xff1a; 威斯康星州乳腺癌数据集&#xff08;Wisconsin Breast Cancer Dataset&#xff09;是一个经典的机器学习数…

vue+node使用RSA非对称加密,实现登录接口加密密码

背景 登录接口&#xff0c;密码这种重要信息不可以用明文传输&#xff0c;必须加密处理。 这里就可以使用RSA非对称加密&#xff0c;后端生成公钥和私钥。 公钥&#xff1a;给前端&#xff0c;公钥可以暴露出来&#xff0c;没有影响&#xff0c;因为公钥加密的数据只有私钥才…

Rabbit加密算法:性能与安全的完美结合

title: Rabbit加密算法&#xff1a;性能与安全的完美结合 date: 2024/4/19 19:51:30 updated: 2024/4/19 19:51:30 tags: Rabbit加密对称加密流密码密钥调度安全分析实际应用加密算法 第一章&#xff1a;引言 1. 加密算法的基本概念和应用 加密算法是一种通过对数据进行转换…

排序算法之桶排序

目录 一、简介二、代码实现三、应用场景 一、简介 算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性桶排序O(nk )O(nk)O(n^2)O(nk)Out-place稳定 稳定&#xff1a;如果A原本在B前面&#xff0c;而AB&#xff0c;排序之后A仍然在B的前面&#xff1b; 不…

【Linux】进程的地址空间

一、看现象 1 #include<stdio.h>2 #include<unistd.h>3 4 int g_val 100;5 int main()6 {7 printf("father process is running!pid: %d,ppid: %d\n",getpid(),getppid( ));8 sleep(1);9 10 int id fork();11 if(id 0)12 {13 int cn…

vue快速入门(三十二)局部与全局注册组件的步骤

注释很详细&#xff0c;直接上代码 上一篇 新增内容 局部注册组件全局注册组件 文件结构 源码 MyHeader.vue <!-- 用于测试全局注册组件 --> <template><div><h1>又可以愉快的学习啦</h1></div> </template><script>export d…

go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控

Linux中的tail命令 tail 命令是一个在 Unix/Linux 操作系统上用来显示文件末尾内容的命令。它可以显示文件的最后几行内容&#xff0c;默认情况下显示文件的最后 10 行。tail 命令 非常有用&#xff0c;特别是在我们查看日志文件或者监视文件变化时。 基本用法如下&#xff1a…

LLM生成模型在生物单细胞single cell的应用:scGPT

参考&#xff1a; https://github.com/bowang-lab/scGPT https://www.youtube.com/watch?vXhwYlgEeQAs 相关算法&#xff1a; 主要是把单细胞测序出来的基因表达量的拼接起来构建成的序列&#xff0c;这里不是用的基因的ATCG&#xff0c;是直接用的基因名称 训练数据&#x…
最新文章