# -*- coding: utf-8 -*-
'''
Created on 2018年1月24日
@author: Jason.F
@summary: 有监督回归学习-决策树回归模型,无需对数据进行特征转换,就能处理非线性关系的数据
'''
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.cross_validation import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics.regression import mean_squared_error, r2_score
#导入波士顿房屋数据集
df=pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data',header=None,sep='\s+')
df.columns=['CRIM','ZM','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PTRATIO','B','LSTAT','MEDV']#单颗决策树回归,MSE替代熵作为节点t的不纯度度量标准
X=df[['LSTAT']].values
y=df['MEDV'].values
tree = DecisionTreeRegressor (max_depth=3)
tree.fit(X,y)
sort_idx = X.flatten().argsort()
def lin_regplot(X,y,model):plt.scatter(X,y,c='blue')plt.plot(X,model.predict(X),color='red')return None
lin_regplot(X[sort_idx],y[sort_idx],tree)
plt.xlabel('%lower status of the population[LSTAT]')
plt.ylabel('Price in $1000\'s [MEDV]')
plt.show()#随机森林,对数据集中的异常值不敏感,且无更多参数调优
#随机森林回归使用MSE作为单颗决策树生成的标准,同时所有决策树预测值的平均数作为预测目标变量的值
X=df.iloc[:,:-1].values
y=df['MEDV'].values
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.4,random_state=1)
forest = RandomForestRegressor(n_estimators=1000,criterion='mse',random_state=1,n_jobs=1)
forest.fit(X_train,y_train)
y_train_pred = forest.predict(X_train)
y_test_pred = forest.predict(X_test)
print ('MSE train:%.3f,test:%.3f'%(mean_squared_error(y_train,y_train_pred),mean_squared_error(y_test,y_test_pred)))
print ('R^2 train:%.3f,test:%.3f'%(r2_score(y_train,y_train_pred),r2_score(y_test,y_test_pred)))
#可视化效果
plt.scatter(y_train_pred,y_train_pred-y_train,c='black',marker='o',s=35,alpha=0.5,label='Training data')
plt.scatter(y_test_pred,y_test_pred-y_test,c='lightgreen',marker='s',s=35,alpha=0.7,label='Test data')
plt.xlabel('Predicted values')
plt.ylabel('Residuals')
plt.legend(loc='upper left')
plt.show()

结果:

MSE train:1.642,test:11.052
R^2 train:0.979,test:0.878

【Python-ML】SKlearn库非线性决策树回归相关推荐

  1. Python安装sklearn库时出现异常:ERROR: Could not install packages due to an EnvironmentError: [Errno 2]

    文章目录 一.问题描述 二.问题解决 一.问题描述 今天在学习python机器学习时,需要安装python的sklearn库,在安装的过程中出现了以下错误 上CSDN上找了好多文章,都没办法解决问题 ...

  2. ID3决策树 Python实现 + sklearn库决策树模型的应用

    本文介绍机器学习中决策树算法的python实现过程 共介绍两类方法: (1)亲手实习Python ID3决策树经典算法 (2)利用sklearn库实现决策树算法 关于决策树的原理,指路:机器学习 第四 ...

  3. 用Python的sklearn库进行PCA(主成分分析)

    在python的sklearn的库里面集成很多机器学习算法的库,其中也包括主成分分析的方法. 1.PCA算法的原理: PCA主要是用来数据降维,将高纬度的特征映射到低维度的特征,加快机器学习的速度.比 ...

  4. 机器学习系列7 基于Python的Scikit-learn库构建逻辑回归模型

    课前测验 本文所用数据免费下载 在本文中,你将学习: 0 用于数据可视化的新库 1 逻辑回归原理及技术 目录 一.内容介绍 二.理论知识 1.分类与回归的区别 2.逻辑回归与其他回归的区别 3.逻辑回 ...

  5. 每天进步一点点《ML - Sklearn库简单学习》

    一:Sklearn介绍 Sklearn是一个强大的机器学习库,基于python的.官方文档(http://scikit-learn.org/stable/ ).如下列举部分的使用场景. 由图中,可以看 ...

  6. python中sklearn库更新_python库之sklearn

    一.安装sklearn conda install scikit-learn 参考文献 [1]整体介绍sklearn https://blog.csdn.net/u014248127/article/ ...

  7. python二元函数如何编写,如何用Python和sklearn编写多元对数回归?

    我写了一个多元多项式回归的代码,我使用了来自sklearn的多项式特征和转换函数.有可能进行多元对数回归吗? sklearn是否有某种对数变换,就像它对多项式特征的那样? 如何在python中编写多元 ...

  8. Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别

    敲<Python机器学习及实践>上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下: ...

  9. 怎么用python实现回归_Python使用sklearn实现的各种回归算法示例

    本文实例讲述了Python使用sklearn实现的各种回归算法.分享给大家供大家参考,具体如下: 使用sklearn做各种回归 基本回归:线性.决策树.SVM.KNN 集成方法:随机森林.Adaboo ...

最新文章

  1. c语言中合法的字符型常量是,C语言习题库(带答案)-排版.doc
  2. Ubuntu下安装配置Open×××
  3. Java throws子句
  4. c++ assert()断言
  5. 2015.5.28 面试题1:赋值运算符函数
  6. redis配置_Redis配置大全(三)
  7. pythonelectron桌面开发案例_electron vue桌面应用入门实例
  8. cmd小游戏_使用pygame制作Flappy bird小游戏
  9. maven checkstyle 文件_flink教程-在IntelliJ IDEA 中玩转 checkstyle
  10. Word-制作“田”字格、“米”字格、“拼音”字格和“日”字格
  11. 雄迈摄像头研究笔记一:telnet的开启
  12. Androidd打开文件选择器并返回文件的真实路径——听风便是雨,倚栏卧人间
  13. 驻波在物理上的应用与魅力
  14. opencv应用实例-金圣韬-专题视频课程
  15. activiti 汉化
  16. 虹膜识别1.opencv3同心圆的提取
  17. linux 关闭浏览器,在Linux和Windows下关闭谷歌Chrome浏览器中的通知提醒的方法
  18. 关于SQL中not exists的双重否定的一些记录
  19. 用 Python 快速追踪基金的收益情况(2022年4月更新) | Python财经实践
  20. 详解机器学习中的熵、条件熵、相对熵、交叉熵

热门文章

  1. PHP未定义名称的方法,PHP:“调用未定义的方法”......但方法是否已定义?
  2. python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...
  3. Linux下安装MongoDB单节点
  4. 20170910校内训练
  5. 递归方法:对于树形结构的表,根据当前数据获取无限极的父级名称
  6. SharedActivityContext要引用那个单元?
  7. mysql主从 1050错误
  8. Linux虚拟机NAT模式设置固定ip
  9. Android4.4.2KK竖屏强制更改为横屏的初步简略方案
  10. Pat乙级 1049 数列的片段和