RandomForestClassifier、SVM、xgboost实现二分类算法

2023-05-16

RandomForestClassifier

# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import csv 
from sklearn.model_selection import train_test_split  # 数据分割
from sklearn.preprocessing import Imputer  # 数据缺省值处理
from sklearn.preprocessing import MinMaxScaler  # 数据归一化
from sklearn.preprocessing import label_binarize  # 数据二值化
from sklearn.decomposition import PCA  # 降维
from sklearn.ensemble import RandomForestClassifier  # 分类随机森林模型
from sklearn import metrics  # ROC/AUC
from sklearn.metrics import roc_auc_score
from sklearn import cross_validation,metrics

# 设置字符集,防止中文乱码
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = False


# 1.读取数据
path1 = 'path' 
path2 = 'path' 
dftrian = pd.read_csv(path1, header=None)
dftest = pd.read_csv(path2, header=None)
# print(df.columns) 获取特征名称
feature = u'****'


# 2.划分数据
X_train, Y_train = dftrian[list(range(8))], dftrian[8]
X_test = dftest[list(range(8))]


# 5.数据归一化
# 分类模型,经常使用的是minmaxscaler归一化,回归模型经常用standardscaler标准化
ss = MinMaxScaler()  # 构建归一化模型
X_train = ss.fit_transform(X_train, Y_train)  # 训练模型并转换数据
X_test = ss.transform(X_test) # 转换数据


# 6.降维(此数据集的维度比较高,我们可以做降维处理)
#pca = PCA(n_components=2)  # 创建PCA模型,指定维度为2
#X_train = pca.fit_transform(X_train)  # 训练模型并转换数据
#X_test = pca.transform(X_test)


# 7.随机森林模型构建及训练
# n_estimators=100决策树个数,max_depth=1每个决策树深度,random_state=0随机数种子
#forest = RandomForestClassifier(n_estimators=2000, criterion='gini', max_depth=25, random_state=5)
forest = RandomForestClassifier(n_estimators=1000,max_features=6,max_depth=25,
                             oob_score=True,random_state=10)

forest.fit(X_train, Y_train)  # 训练模型
# 8.模型评估
score1 = forest.score(X_train, Y_train)  # 准确率
print('train准确率:%.2f%%' % (score1 * 100))
#score = forest.score(X_test, Y_test)  # 准确率
#print('准确率:%.2f%%' % (score * 100))
#y_pred = forest.predict(dtest)
#auc_score = roc_auc_score(y_test,y_pred)

#print('auc:%.2f%%' % (test_auc * 100))
# 9.模型预测
forest_y_score = forest.predict_proba(X_test)  # prodict_proba输出概率
forest_y_score1 = forest.predict_proba(X_train) 
p = forest.predict(X_test)
returnMat = np.zeros((20000,2))
for i in range(20000):
    returnMat[i][0] = forest_y_score[i][0]
    returnMat[i][1] = forest_y_score[i][1]

with open('C:\\\\test.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(returnMat)

SVM

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import warnings

from sklearn import svm  # SVM模型
from sklearn.model_selection import train_test_split  # 数据分割
from sklearn.metrics import accuracy_score  # 计算正确率
from sklearn.exceptions import ChangedBehaviorWarning  # 警告处理



# 设置字符集,防止中文乱码
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = False
# 警告处理
warnings.filterwarnings('ignore', category=ChangedBehaviorWarning)


# 1.读取数据
path1 = 'path' 
path2 = 'path' 
dftrian = pd.read_csv(path1, header=None)
dftest = pd.read_csv(path2, header=None)
# print(df.columns) 获取特征名称
feature = u'***'

# 2.划分数据
X_train, Y_train = dftrian[list(range(8))], dftrian[8]
X_test,Y_test = dftest[list(range(8))], dftest[8]



# 4.模型构建
'''
sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto_deprecated’, coef0=0.0, 
				shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, 
				verbose=False, max_iter=-1, decision_function_shape=’ovr’, random_state=None)
svm.SVC API说明:
# 功能:使用SVM分类器进行模型构建
# 参数说明:
# C: 误差项的惩罚系数,默认为1.0;一般为大于0的一个数字,C越大表示在训练过程中对于总误差的关注度越高,
	 也就是说当C越大的时候,对于训练集的表现会越好,但是有可能引发过度拟合的问题(overfiting)
# kernel:指定SVM内部函数的类型,可选值:linear、poly、rbf、sigmoid、precomputed(基本不用,有前提要求,要求特征属性数目和样本数目一样);默认是rbf;
# degree:当使用多项式函数作为svm内部的函数的时候,给定多项式的项数,默认为3
# gamma:当SVM内部使用poly、rbf、sigmoid的时候,核函数的系数值,当默认值为auto的时候,实际系数为1/n_features
# coef0: 当核函数为poly或者sigmoid的时候,给定的独立系数,默认为0
# probability:是否启用概率估计,默认不启动,不太建议启动
# shrinking:是否开启收缩启发式计算,默认为True
# tol: 模型构建收敛参数,当模型的的误差变化率小于该值的时候,结束模型构建过程,默认值:1e-3
# cache_size:在模型构建过程中,缓存数据的最大内存大小,默认为空,单位MB
# class_weight:给定各个类别的权重,默认为空
# max_iter:最大迭代次数,默认-1表示不限制
# decision_function_shape: 决策函数,可选值:ovo和ovr,默认为None;推荐使用ovr;
'''
clf = svm.SVC(C=1, kernel='rbf', gamma=0.05)
# gamma值越大,训练集的拟合就越好,但是会造成过拟合,导致测试集拟合变差
# gamma值越小,模型的泛化能力越好,训练集和测试集的拟合相近,但是会导致训练集出现欠拟合问题,
# 从而,准确率变低,导致测试集准确率也变低。


# 5.模型训练
clf.fit(X_train, Y_train)


# 6.模型评估:计算模型的准确率/精度
print ('训练集准确率:', accuracy_score(Y_train, clf.predict(X_train)))
print ('训练集准确率X_test:', accuracy_score(Y_test, clf.predict(X_test)))
#print (clf.score(X_test, Y_test))
#print ('测试集准确率:', accuracy_score(Y_test, clf.predict(X_test)))
# 计算决策函数的结构值以及预测值(decision_function计算的是样本x到各个分割平面的距离<也就是决策函数的值>)
print ('decision_function:\n', clf.decision_function(X_train))
print ('\npredict:\n', clf.predict(X_train))





xgboost

# -*- coding: utf-8 -*-

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import warnings  #警告处理

from sklearn.linear_model.coordinate_descent import ConvergenceWarning
from sklearn.model_selection  import train_test_split  # 数据分割
from sklearn.metrics import accuracy_score  # 计算正确率
from sklearn.metrics import mean_squared_error  # 均方误差

import xgboost as xgb  # xgboost模型

# 设置字符集,防止中文乱码
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = False
# 警告处理
warnings.filterwarnings(action='ignore', category=ConvergenceWarning)


# 1.读取数据
iris_feature = u'***'
path = 'path'  # 数据路径
data = pd.read_csv(path, header=None)


# 2.划分数据
X, Y = data[list(range(8))], data[8]
# 把文本数据进行编码,比如a b c编码为 0 1 2; 可以通过pd.Categorical(y).categories获取index对应的原始值
#Y = pd.Categorical(Y).codes
#X = data[[0,1]]  # 获取第1列和第二列


# 3.数据分割
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, train_size=0.8, random_state=0)

# 5.XGBoost将数据转换为XGBoost可用的数据类型
dtrain = xgb.DMatrix(X_train, label=Y_train)
dtest = xgb.DMatrix(X_test)


# 6.XGBoost模型构建
# a.参数构建
params = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'reg:linear'}  # reg:linear线性回归
num_round = 2
# b.模型训练
bst = xgb.train(params, dtrain, num_round)
# c.模型保存
bst.save_model('xgb.model')

# 7.XGBoost模型预测
y_pred = bst.predict(dtest)
print("均方误差为:",mean_squared_error(Y_test, y_pred))

# 8.加载模型
bst2 = xgb.Booster()
bst2.load_model('xgb.model')
# 9.使用加载模型预测
#bst = bst2.predict(dtest)
#print("均方误差为:",mean_squared_error(Y_test, y_pred2))

# 6.模型评估:计算模型的准确率/精度
print ('测试集准确率:', accuracy_score(Y_test, bst))


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RandomForestClassifier、SVM、xgboost实现二分类算法 的相关文章

随机推荐

  • ubuntu下makeinfo/texinfo 安装的解决办法

    环境 ubuntu 16 04 sudo apt get install makeinfo 提示找不到包 搜了一圈资料 xff0c 发现makeinfo其实就是texinfo sudo apt get install texinfo 还是找
  • 自平衡机器人DIY(一)

    看到一篇DIY自平衡机器人的文章 xff0c 感觉特别有意思 xff01 正好趁着寒假的工夫 xff0c 也来做一做 参考过程 xff1a 自平衡机器人 蛋黄物语 原理 原理 就是应用负反馈控制 xff0c 由测量到的角度和自身平衡时的自然
  • Go 与 Java 生成grpc代码

    1 背景 xff1a 由于公司的日志系统使用的是plumelog xff0c 最近生产环境老是报 jedis连接池不够 xff0c 导致丢失日志 xff0c 而且服务老是重启 xff0c 怀疑跟日志系统有关 xff0c 于是自己改造plum
  • Ubuntu开机自动挂载Windows分区(NTFS FAT32)教程

    这是我总结网上相关教程 xff0c 结合我的实际操作总结的 在开始实际的操作之前 xff0c 我们必须要了解linux系统下的挂载概念 在linux操作系统中 xff0c 挂载是一个非常重要的功能 xff0c 使用非常频繁 它指将一个设备
  • 第六章 Java FutureTask 示例

    在本教程中 xff0c 我们将看到有关 Java FutureTask 的示例 FutureTask 类已在 JDK 5 中与 Executor Framework 一起引入 FutureTask类是Future对象的具体实现 xff0c
  • ORB-SLAM2系统的实时点云地图构建

    ORB SLAM2系统的实时点云地图构建 这篇博客点云地图构建的流程代码介绍点云地图构建类对象小调整获取关键帧点云地图构建与叠加在地图中设置当前相机位置点云地图到Octomap的转换 地图效果结尾 这篇博客 xff08 PS 修改于2020
  • 查理·芒格:让自己配得上想要的东西

    巴菲特说他一生遇人无数 xff0c 从来没有遇到过像查理这样的人 94岁的查理 芒格毕业于哈佛大学法学院 xff0c 是沃伦 巴菲特的黄金搭档 xff0c 伯克夏 哈撒韦公司的副主席 xff0c 芒格的头脑是原创性的 xff0c 从来不受任
  • react路由传参的几种方式

    params传参 支持多个动态参数 state 61 id 88 name Jack 路由页面 xff1a 路由跳转并传递参数 xff1a 链接方式 xff1a lt Link to 61 pathname code demo this s
  • 对极几何、三角测量、PnP、ICP问题描述

    对极几何 三角测量 PnP ICP问题描述 文章目录 对极几何 三角测量 PnP ICP问题描述前言2D 2D xff1a 对极几何三角测量1 求解空间点深度2 求解空间点坐标 3D 2D xff1a PnP1 直接线性变换 xff08 D
  • springsecurity 登录后依然无法访问页面

    springsecurity 登录后依然无法访问页面 登录成功 点击左侧功能列表报错 org springframework security access AccessDeniedException Access is denied at
  • 前端---vscode插件推荐及GIT一些问题操作说明(持续更新)

    以前都是用sublime xff0c 最近开始使用vscode xff08 v1 50 0 xff09 xff0c 写一些心得记录一下 先安利一些自己使用的插件 TabNine这个插件 xff0c 如果电脑配置ok xff0c 可以装一下
  • http协议之digest(摘要)认证

    参考网址 xff1a RFC 2617 HTTP Authentication Basic and Digest Access Authenti RFC2617 RFC 1321 The MD5 Message Digest Algorit
  • FreeRTOS heap 4 机制解析

    FreeRTOS提供了几个内存管理的方案 xff0c 其中一个实现较好的方式是heap4 本篇就来形象讲述heap4的工作原理 本文暂时只用作自己对heap4的工作机制的总结和记录 xff0c 有空了再修改成教程吧 xff0c 所以 xff
  • 使用Qt写Xml文档,追加节点。

    追加Xml文档就是 xff0c 要 增 一段内容 xff0c 要实现的效果如下 xff1a 因为想临时存储一些东西 xff0c 所以利用xml做个简易的数据库 xff0c 要应用的ARM设备上 xff0c 存放入SD卡 网上找了半天 xff
  • sudo apt-get update 报错 ubuntu xenial InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)解决

    一句话总结 xff1a 换可用的国内源 问题的产生 xff1a 今天刚装了个ubuntu 16 04 xff08 还没装新的 xff09 结果想装个vim一直不成功 xff0c sudo apt update多次总是出现下面的 xff1a
  • docker 常用命令

    systemctl start docker 启动docker服务 systemctl stop docker 停止docker服务 systemctl restart docker 重启docker服务 systemctl status
  • 大疆Manifold 制作和恢复镜像及恢复出厂设置卡主不动处理方法

    进入恢复模式 首先你要准备一台运行Ubuntu 14 04或者Ubuntu16 04的电脑 xff0c 将电脑与Manifold 的RECOVERY USB 接口 xff0c 用Manifold自带的USB线连接 连接电源 xff0c 上电
  • Gazebo构建小车模型并通过ROS控制

    Gazebo构建小车模型并通过ROS控制 介绍编写车子的URDF文件编写控制小车移动的插件 与ROS交互 结尾 介绍 突然想试试Gazebo这款仿真软件 xff0c 因为它可以让你在任何时候都有机器人玩 但Gazebo的机制也比较复杂 xf
  • OPENCV面试题

    1 opencv中RGB2GRAY是怎么实现的 答 xff1a 以R G B为轴建立空间直角坐标系 xff0c 则RGB图的每个象素的颜色可以用该三维空间的一个点来表示 xff0c 而Gray图的每个象素的颜色可以用直线R 61 G 61
  • RandomForestClassifier、SVM、xgboost实现二分类算法

    RandomForestClassifier span class token comment coding utf 8 span span class token keyword import span numpy span class