Python 利用SVM,KNN,随机森林进行预测
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,随机森林进行预测相关推荐
- python分类器knn、svm_[转载]MatLab分类器大全(svm,knn,随机森林等)
train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归( ...
- MatLab2012b/MatLab2013b分类器大全(svm,knn,随机森林等)
train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归( ...
- paper 130:MatLab分类器大全(svm,knn,随机森林等)
train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归( ...
- python房价预测模型_python随机森林房价预测
Kaggle房价预测 作为Kaggle竞赛中的经典入门题目,我主要在kernels中学习其他人分析和处理数据的流程,首先是通过各类plt的图表,分析数据特征和房价之间的相关性 载入数据集 df_tra ...
- matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法
博客地址:https://blog.csdn.net/CoderPai/article/details/96499505 点击阅读原文,更好的阅读体验 CoderPai 是一个专注于人工智能在量化交易 ...
- 使用IBM SPSS Modeler进行随机森林算法预测
IBM SPSS产品系列最主要的两款软件为IBM SPSS Statistics和IBM SPSS Modeler. IBM SPSS Statistics主要用于统计分析,如均值比较.方差分析.相关 ...
- Python进行决策树和随机森林
Python进行决策树和随机森林 一.决策树 第一步,导入库: 第二步,导入数据: 第三步,数据预处理: 第四步,决策树: 第五步,决策树评价: 第六步,生成决策树图. 二.随机森林 第一步,随机森林 ...
- python 营销应用_随机森林算法入门(python),,它可以用于市场营销对客户
随机森林算法入门(python),,它可以用于市场营销对客户 目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变 ...
- 随机森林——气温预测(2/2)
python数据分析个人学习读书笔记-目录索引 第9章--随机森林项目实战--气温预测(2/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其 ...
最新文章
- 5分钟实现Android中更换头像功能
- eureka java_spring cloud 入门系列二:使用Eureka 进行服务治理
- linux band0 手动重启,linux相关知识整理(4)
- 剑指offer-斐波那契数列
- vue js前端根据所需参数生成二维码并下载
- 那个 14 岁上大学、17 岁读博、24 岁当教授的天才神童,如今怎么样了?
- java 强制走catch_java – IDE强制使用try / catch包围但不抛出异常
- 网络安全系列之五十四 为GRUB引导菜单设置密码
- Vue的单页应用中如何引用单独的样式文件
- spark提交任务的两种的方法
- python 实现熵权法确定各指标的权重
- 腾讯入股合作金融云,花费4亿元获长亮科技7.14%股份
- 数组根据条件筛选出满足条件的数据(数组里面是对象)
- raid5加热备盘_Raid5、热备盘原理 | 与其焦虑
- CentOS上安装Docker及docker常用命令
- bC技术绑定10讲②解读“bC双码关联”!
- c++如何输入一个不定长的字符串数组
- js中有哪几种数据类型
- XENAPP 7.6 和XENDESKTOP 7.6 初体验之一 安装
- IGT 2013校园招聘 笔试题