不同分类器对数据的处理

这篇具有很好参考价值的文章主要介绍了不同分类器对数据的处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

"""
    基于鸢尾花的不同分类器的效果比对:
        step1:
            准备数据;
            提取数据的特征向量X,Y
            将Y数据采用LabelEncoder转化为数值型数据;
        step2:
            将提取的特征向量X,Y进行拆分(训练集与测试集)
        step3:
            构建不同分类器并设置参数,例如:KNN,RF,SVM,deng;
        step4:
            循环遍历model列表:
                设置时间戳;
                每循环一个模型,进行模型训练,模型验证或测试打分并将结果进行记录;
        step5:plot(画图)
"""
import time
import warnings
import sys

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib.pylab as mpl
from sklearn.preprocessing import LabelEncoder       ###数据清洗
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC, SVR
from sklearn.neighbors import KNeighborsClassifier   ###KNN
from sklearn.ensemble import RandomForestClassifier  ###随机森林
from sklearn.linear_model import LogisticRegression  ###逻辑回归器


# 溢出警告设置为0
warnings.filterwarnings('ignore')

# 防止中文乱码
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = 'False'

# 数据路径
path = 'iris.data'
names = ['A', 'B', 'C', 'D', 'cls']
# 创建读取数据对象
data = pd.read_csv(filepath_or_buffer=path, header=None, names=names)
print(data)
# print(data['cls'].values)
# sys.exit()
# 读取特征向量X, Y
X = data.iloc[:, :2]
# Y = data.iloc[:, :-1]
Y = data['cls']

# 将字符型数据Y转成数值型  数据清洗或调用LabelEncoder
class_label = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}
# 对目标属性做一个类别的转换,将字符串的数据转换为从0开始的int值
### 方式一: LabelEncoder方法
# label_encoder = LabelEncoder()
# Y = label_encoder.fit_transform(Y)
# print(Y)
### 方式二:采用map一一印射关系+匿名函数
data['cls'] = list(map(lambda cls: class_label[cls], data['cls'].values))
print(data['cls'].values)

# 数据拆分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=10)

# 构建不同分类器
svc = SVC(C=0.2, kernel='rbf', decision_function_shape='ovr')
knn = KNeighborsClassifier(n_neighbors=5)
log = LogisticRegression()
rand = RandomForestClassifier(n_estimators=150, max_depth=3)
models = np.array([svc, knn, log, rand])

# 创建新列表记录数据
T = []
TRAIN_SORCE = []
TEST_SORCE = []

# 遍历不同分类器进行训练、打分和时间花销,并记录方便后续画图
for i in models:
    N = time.clock()
    i.fit(x_train, y_train)
    M = time.clock()
    T.append(M-N)
    TRAIN_SORCE.append(i.score(x_train, y_train))
    TEST_SORCE.append(i.score(x_test, y_test))

# 画图
plt.figure(num=1)
plt.plot(['svc01', 'knn02', 'log03', 'rand04'], TRAIN_SORCE, 'r-', linewidth='3', label='TRAIN_SORCE')
plt.plot(['svc01', 'knn02', 'log03', 'rand04'], TEST_SORCE, 'b-o', linewidth='3', label='TEST_SORCE')
# 设置Y轴尺度
plt.ylim(0.5, 1.2)

plt.figure(num=2)
plt.plot(['svc01', 'knn02', 'log03', 'rand04'], T, 'g-o', linewidth='3', label='time')
plt.show()


E:\myprogram\anaconda\envs\python3.6\python.exe E:/XXX/L-SVM/_differ-classifiies.py
       A    B    C    D             cls
0    5.1  3.5  1.4  0.2     Iris-setosa
1    4.9  3.0  1.4  0.2     Iris-setosa
2    4.7  3.2  1.3  0.2     Iris-setosa
3    4.6  3.1  1.5  0.2     Iris-setosa
4    5.0  3.6  1.4  0.2     Iris-setosa
..   ...  ...  ...  ...             ...
145  6.7  3.0  5.2  2.3  Iris-virginica
146  6.3  2.5  5.0  1.9  Iris-virginica
147  6.5  3.0  5.2  2.0  Iris-virginica
148  6.2  3.4  5.4  2.3  Iris-virginica
149  5.9  3.0  5.1  1.8  Iris-virginica

[150 rows x 5 columns]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

Process finished with exit code 0

文章来源地址https://www.toymoban.com/news/detail-650090.html

到了这里,关于不同分类器对数据的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 一文全解经典机器学习算法之支持向量机SVM(关键词:SVM,对偶、间隔、支持向量、核函数、特征空间、分类)

    之前所介绍的逻辑回归是基于似然度的分类方法,通过对数据概率进行建模来得到软输出。但这种分类方法其实稍加“繁琐”,因为要 估计数据的概率分布作为中间步骤 。这就像当一个人学习英语时,他只要直接报个班或者自己看书就行了,而不需要先学习诘屈聱牙的拉丁

    2024年02月03日
    浏览(63)
  • 机器学习之支持向量机(SVM)对乳腺癌数据二分类python实现

    支持向量机(Support Vector Machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。 间隔最大化,就是所有样本点中,离我们分类界限超平面最近的样本点,尽可能的远离超平面。这种思想

    2024年02月03日
    浏览(101)
  • 机器学习(七):梯度下降解决分类问题——perceptron感知机算法与SVM支持向量机算法进行二维点分类

    实验2 感知机算法与支持向量机算法 一、预备知识 1.感知机算法 二、实验目的 掌握感知机算法的原理及设计; 掌握利用感知机算法解决分类问题。 三、实验内容 设计感知机算法求解, 设计SVM算法求解(可调用函数库),请找出支持向量和决策超平面。 四、操作方法和实验

    2023年04月26日
    浏览(90)
  • ENVI实现最小距离法、最大似然法、支持向量机遥感图像监督分类与分类后处理操作

      本文介绍基于 ENVI 软件,实现 最小距离法 、 最大似然法 与 支持向量机 三种遥感图像 监督分类 方法的具体操作,同时进行 分类后处理 操作,并对不同分类方法结果加以对比分析。   我们先来看一下本文需要实现的需求。现有一景北京部分地区高分一号遥感影像数

    2024年02月05日
    浏览(58)
  • 支持向量机(SVM)进行文本分类的Python简单示例实现

    支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,主要用于分类和回归问题。它的基本思想是将数据映射到高维空间中,使得数据在该空间中线性可分,然后在该空间中寻找最优的超平面,将不同类别的数据分开。 SVM的优点在于可以处理高维数据,具有较好

    2024年01月25日
    浏览(59)
  • 支持向量机svm分类、回归、网格搜索 基于sklearn(python)实现

    由于水平有限 支持向量机(support vector machine)的数学原理和证明就不讲了 想知道可以去看李航的机器学习或者西瓜书 1、读入数据,将数据调成该库能够识别的格式 2、 将数据标准化 ,防止样本中不同特征的数值差别较大,对分类结果产生较大影响 3、利用网格搜索和k折交

    2023年04月11日
    浏览(46)
  • SVM(支持向量机)进行分类的原理和python代码----通俗易懂

    SVM(支持向量机,Support Vector Machine)是一种非常流行的机器学习算法,可用于二分类和多分类问题。其基本思想是通过在不同类别的样本之间构建最大化分类间隔的线性或非线性超平面来实现分类。 SVM分类的基本步骤如下: 根据训练集数据,选取最优的超平面(通常为线性

    2024年02月11日
    浏览(56)
  • Python | 机器学习之SVM支持向量机

    ​​​​​​ ​ 🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《人工智能奇遇记》 🔖墨香寄清辞:诗馀墨痕深,梦漫星辰寂。 曲径通幽意犹在,剑指苍穹气势立。 目录结构 1. 机器学习之SVM支持向量机概念 1.1 机器学习 1.2 SVM支持向量机 2. SVM支持向量机算法 2.1 实验目的

    2024年02月05日
    浏览(40)
  • 【Pytroch】基于支持向量机算法的数据分类预测(Excel可直接替换数据)

    支持向量机(Support Vector Machine,SVM)是一种强大的监督学习算法,用于二分类和多分类问题。它的主要思想是找到一个最优的超平面,可以在特征空间中将不同类别的数据点分隔开。 下面是使用PyTorch实现支持向量机算法的基本步骤和原理: 数据准备: 首先,你需要准备你

    2024年02月13日
    浏览(58)
  • 【Sklearn】基于支持向量机算法的数据分类预测(Excel可直接替换数据)

    支持向量机(Support Vector Machine,SVM)是一种用于分类和回归的监督学习算法,其基本思想是在特征空间中找到一个能够最大化分类间隔(Margin)的超平面,从而将不同类别的样本正确分类。以下是SVM的数学模型和模型原理的解释: 假设我们有一个训练数据集,包含

    2024年02月13日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包