Python 利用SVM,KNN,随机森林进行预测

工具:Pycharm,Win10,Python3.6.4

上图是我们的数据文件,最后一列是附近有无超市的标签,1代表有,-1代表没有。可以发现数据维度比较多,我通关计算相关系数提出相关性低的特征。

data = pd.read_excel('data.xls')
# print(data)
column = data.columns.tolist()[:19]
# print(column)
mcorr = data.corr()
mcorr_data = np.array(mcorr.标签)
# print(mcorr_data)
mask = np.zeros_like(mcorr, dtype=np.bool)  # 构造与mcorr同维矩阵 为bool型
mask[np.triu_indices_from(mask)] = True  # 角分线右侧为True
# 绘制图像
plt.figure(figsize=(24, 24))
cmap = sns.diverging_palette(220, 10, as_cmap=True)  # 返回matplotlib colormap对象
g = sns.heatmap(mcorr, mask=mask, cmap=cmap, square=True, annot=True, fmt='0.2f')  # 热力图
plt.show()#删除相关性小的特征
x = pd.DataFrame(data.drop(['风景名胜', '公共设施', '租赁成本'], axis=1))

相关矩阵图如上,我们可以看到有些特征相关性比较低,如公共设施,风景名胜,租赁成本比较低,所以我们可以直接删除这些特征。

下面就是调用sklearn库去预测数据,我们主要使用SVM,KNN,随机森林,发现SVM和随机森林结果略优于KNN

import pandas as pd
import sklearn
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_splitplt.rcParams['font.family'] = 'SimHei'  # 配置中文字体
plt.rcParams['font.size'] = 15  # 更改默认字体大小
data = pd.read_excel('data.xls')
# print(data)
column = data.columns.tolist()[:19]
# print(column)
mcorr = data.corr()
mcorr_data = np.array(mcorr.标签)
# print(mcorr_data)
mask = np.zeros_like(mcorr, dtype=np.bool)  # 构造与mcorr同维矩阵 为bool型
mask[np.triu_indices_from(mask)] = True  # 角分线右侧为True
# 绘制图像
plt.figure(figsize=(24, 24))
cmap = sns.diverging_palette(220, 10, as_cmap=True)  # 返回matplotlib colormap对象
g = sns.heatmap(mcorr, mask=mask, cmap=cmap, square=True, annot=True, fmt='0.2f')  # 热力图
plt.show()#删除相关性小的特征
x = pd.DataFrame(data.drop(['风景名胜', '公共设施', '租赁成本'], axis=1))#对数据做归一化处理
x_normal = (x - x.min()) / (x.max() - x.min())
# print(x_normal)Y = np.array(x_normal.标签)
X = np.array(pd.DataFrame(x_normal.drop(['标签'] , axis = 1),index=None))
# print(Y)
# print(X)
#分割训练集和测试集
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=42)from sklearn.svm import SVC
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_scoreclf = SVC(kernel='rbf', class_weight='balanced',)
clf.fit(X_train, Y_train)
y_predict = clf.predict(X_test)
error = 0
for i in range(len(X_test)):if clf.predict([X_test[i]])[0] != Y_test[i]:error +=1
print( 'SVM错误率: %.4f' % (error/float(len(X_test))))
print( 'SVM精确率: ', precision_score(Y_test, y_predict, average='macro'))
print( 'SVM召回率: ', recall_score(Y_test, y_predict, average='macro'))
print( 'F1: ', f1_score(Y_test, y_predict, average='macro'))from sklearn.neighbors import KNeighborsClassifier as KNN
knc = KNN(n_neighbors =6,)
knc.fit(X_train,Y_train)
y_predict = knc.predict(X_test)
print('KNN准确率',knc.score(X_test,Y_test))
print('KNN精确率',precision_score(Y_test, y_predict,  average='macro'))
print('KNN召回率',recall_score(Y_test, y_predict,  average='macro'))
print('F1',f1_score(Y_test, y_predict,  average='macro'))from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
rfc.fit(X_train, Y_train)
y_predict = rfc.predict(X_test)
print('随机森林准确率',rfc.score(X_test, Y_test))
print('随机森林精确率',precision_score(Y_test, y_predict,  average='macro'))
print('随机森林召回率',recall_score(Y_test, y_predict,  average='macro'))
print('F1',f1_score(Y_test, y_predict,  average='macro'))

代码中我们还计算了精确率,召回率F1。这些概念不再细讲,大家可以搜一些博客自行学习。

Python 利用SVM,KNN,随机森林进行预测相关推荐

  1. python分类器knn、svm_[转载]MatLab分类器大全(svm,knn,随机森林等)

    train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归( ...

  2. MatLab2012b/MatLab2013b分类器大全(svm,knn,随机森林等)

    train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归( ...

  3. paper 130:MatLab分类器大全(svm,knn,随机森林等)

    train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归( ...

  4. python房价预测模型_python随机森林房价预测

    Kaggle房价预测 作为Kaggle竞赛中的经典入门题目,我主要在kernels中学习其他人分析和处理数据的流程,首先是通过各类plt的图表,分析数据特征和房价之间的相关性 载入数据集 df_tra ...

  5. matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法

    博客地址:https://blog.csdn.net/CoderPai/article/details/96499505 点击阅读原文,更好的阅读体验 CoderPai 是一个专注于人工智能在量化交易 ...

  6. 使用IBM SPSS Modeler进行随机森林算法预测

    IBM SPSS产品系列最主要的两款软件为IBM SPSS Statistics和IBM SPSS Modeler. IBM SPSS Statistics主要用于统计分析,如均值比较.方差分析.相关 ...

  7. Python进行决策树和随机森林

    Python进行决策树和随机森林 一.决策树 第一步,导入库: 第二步,导入数据: 第三步,数据预处理: 第四步,决策树: 第五步,决策树评价: 第六步,生成决策树图. 二.随机森林 第一步,随机森林 ...

  8. python 营销应用_随机森林算法入门(python),,它可以用于市场营销对客户

    随机森林算法入门(python),,它可以用于市场营销对客户 目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变 ...

  9. 随机森林——气温预测(2/2)

    python数据分析个人学习读书笔记-目录索引 第9章--随机森林项目实战--气温预测(2/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其 ...

最新文章

  1. 5分钟实现Android中更换头像功能
  2. eureka java_spring cloud 入门系列二:使用Eureka 进行服务治理
  3. linux band0 手动重启,linux相关知识整理(4)
  4. 剑指offer-斐波那契数列
  5. vue js前端根据所需参数生成二维码并下载
  6. 那个 14 岁上大学、17 岁读博、24 岁当教授的天才神童,如今怎么样了?
  7. java 强制走catch_java – IDE强制使用try / catch包围但不抛出异常
  8. 网络安全系列之五十四 为GRUB引导菜单设置密码
  9. Vue的单页应用中如何引用单独的样式文件
  10. spark提交任务的两种的方法
  11. python 实现熵权法确定各指标的权重
  12. 腾讯入股合作金融云,花费4亿元获长亮科技7.14%股份
  13. 数组根据条件筛选出满足条件的数据(数组里面是对象)
  14. raid5加热备盘_Raid5、热备盘原理 | 与其焦虑
  15. CentOS上安装Docker及docker常用命令
  16. bC技术绑定10讲②解读“bC双码关联”!
  17. c++如何输入一个不定长的字符串数组
  18. js中有哪几种数据类型
  19. XENAPP 7.6 和XENDESKTOP 7.6 初体验之一 安装
  20. IGT 2013校园招聘 笔试题

热门文章

  1. 003 qnap tomcat 目录
  2. windows camera frame server内存占用过大问题
  3. “创新”客户体验的 3 种方法
  4. shell 变量的默认值
  5. Python利用百度AI库颜值分析(包括脸型情绪颜值打分)
  6. 排序二叉树,平衡二叉树和红黑树的概念以及相关的操作讲解
  7. IIS部署网站问题 您正在搜索的页面可能已经删除、更名或暂时不可用。
  8. MATLAB中的函数句柄及其应用
  9. 华为云IoT智慧物流案例01 | 背景介绍与环境搭建
  10. 剪辑视频的软件,分割视频如何做到降低误差