阅读此文,需要有python基础,有英文阅读能力的人点这里。

part1

这里不回答机器学习是什么,能做什么,只告诉你如何快速上手。

熟悉你手中的数据。

1.常用模块导入命令

import pandas as pd

2.文件导入命令

FILE_PATH=".CSV后缀文件存放路径"
data = pd.read_csv(FILE_PATH)

3.数据探索命令。这里以房价预测数据为例,这里下载所需数据,提取码:bn9c。

  • 查看数据规模
data.shape
len(data)
  • 查看列名
data.columns
  • 查看列名属性
data.info()
  • 头部数据查看
data.head()
  • 基本统计
data.describe()

其中有:平均值(mean)、标准差(std)、最小值(min)、最大值(max)以及1/4、1/2、3/4分位数(25%、50%、75%)。

筛选数据

1.缺失值处理

data = data.dropna(axis=0)

2.选出预测目标

y = data.Price

3.选出特征。特征可以理解成影响预测结果的要素。如何确定这些要素,这是后面的话题。

data_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
X = data[data_features]

建模

可以把模型理解成一个黑箱,有入口和出口,入口数据是X,出口数据是y。
1.模型方法引入

from sklearn.tree import DecisionTreeRegressor

模型的选择对预测结果的精确度有很大影响,这里我们先选择决策树模型。你只需要对该模型有个直观的印象。

2.创建和拟合

model = DecisionTreeRegressor(random_state=1)
model.fit(X,y)

random_state是为了确保每次运行都能得到相同的结果。

part2

模型拟合后关心的问题是模型是否合适。如何度量?我们引入一个新的概念:平均绝对误差(MAE)。

平均绝对误差

1.定义:

2. 使用

  • 模块导入
from sklearn.metrics import mean_absolute_error
  • 预测和求MAE
predicted_price = model.predict(X)
mean_absolute_error(y,predicted_price)

细心的你可能会发现,我们在模型拟合和价格预测中用了同一份样本数据X,这显然有些不合理。一个常用的思路是将数据拆分成两部分,分别用来拟合模型和预测结果。

数据拆分

  1. 模块导入
from sklearn.model_selection import train_test_split

2.数据拆分

train_X,val_X,train_y,val_y = train_test_split(X,y,random_state=1)

3.建模、预测和计算MAE

model = DecisionTreeRegressor(random_state =1)model.fit(train_X,train_y)val_predictions = model.predict(val_X)print(mean_absolute_error(val_y,val_predictions))

完整代码示例

第二部分到这里就结束了,我们了解了MAE,并学会了简单的数据拆分方法,下面是完整的代码。

FILE_PATH ="C:\\Users\\Administrator\\Desktop\\kaggle\\data\\"
FILE_INDEX ="melb_data.csv"import pandas as pddata = pd.read_csv(FILE_PATH+FILE_INDEX)y = data.Price# print(y.shape)data_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']X = data[data_features]from sklearn.tree import DecisionTreeRegressor# model = DecisionTreeRegressor(random_state=0)# # print(model.fit(X,y))
# model.fit(X,y)from sklearn.metrics import mean_absolute_error# predicted_price = model.predict(X)# print(mean_absolute_error(y,predicted_price))from sklearn.model_selection import train_test_splittrain_X,val_X,train_y,val_y = train_test_split(X,y,random_state=1)model = DecisionTreeRegressor(random_state =1)model.fit(train_X,train_y)val_predictions = model.predict(val_X)print(mean_absolute_error(val_y,val_predictions))

part3

这部分依旧是对模型验证的讨论。我们会接触到两个新的概念:过拟合(underfitting)和欠拟合(overfitting)。

非官方解释

大白话解释起来就是:照顾数据中的大多数,忽略极少数,这是一种好的拟合;企图去迎合全部数据导致模型预测出现很大偏差,这就是过拟合;仅仅迎合一小部分而忽视大多数,这就是欠拟合。权威解释自行百度。

模拟实验

  1. 你需要知道:
    在scikit-learn 文档中,决策树模型有许多可选配置项,很多重要的配置项都对树的高度(深度)有影响。这里我们只关注参数:max_leaf_nodes
  2. 实验原理:
    通过改变max_leaf_nodes的值来比较MAE大小,从而选择出较适合的参数值。在这个过程中,参数值的改变会导致模型欠拟合或是过拟合。

  3. 完整代码示例:

FILE_PATH ="C:\\Users\\Administrator\\Desktop\\kaggle\\data\\"
FILE_INDEX ="melb_data.csv"import pandas as pddata = pd.read_csv(FILE_PATH+FILE_INDEX)filtered_data = data.dropna(axis=0)data_features =['Rooms', 'Bathroom', 'Landsize', 'BuildingArea', 'YearBuilt', 'Lattitude', 'Longtitude']X = filtered_data[data_features]y = filtered_data.Pricefrom sklearn.tree import DecisionTreeRegressorfrom sklearn.metrics import mean_absolute_errordef get_mae(max_leaf_nodes,train_X,val_X,train_y,val_y):model = DecisionTreeRegressor(max_leaf_nodes=max_leaf_nodes,random_state=0)model.fit(train_X,train_y)preds_val = model.predict(val_X)mae = mean_absolute_error(val_y,preds_val)return(mae)from sklearn.model_selection import train_test_splittrain_X,val_X,train_y,val_y = train_test_split(X,y,random_state=1)# compare MAE with differing values of max_leaf_nodesfor max_leaf_nodes in [5,50,500,5000]:my_mae = get_mae(max_leaf_nodes,train_X,val_X,train_y,val_y)print("Max leaf nodes: %d  \t\t Mean Absolute Error:  %d" %(max_leaf_nodes, my_mae))
  1. 结果图示:

显然500是最佳的参数值。这一部分我们学会了通过比较MAE来确定较合适的参数值,也知道了参数值的不同可能会造成模型过拟合或者欠拟合。下一部分我们回到数据本身,探讨对原始数据的处理。

机器学习极简入门教程(一)相关推荐

  1. Nginx 极简入门教程

    Nginx 极简入门教程 基本介绍 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP服务. Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第 ...

  2. Python极简入门教程

    前言 为了方便各位小白能轻松入门Python,同时加深自己对Python的理解,所以创造了"Python极简入门教程",希望能帮到大家,若有错误请多指正,谢谢.极简入门教程代表着不 ...

  3. 机器学习极简入门课程

    开篇词 | 入门机器学习,已迫在眉睫 大家好,我是李烨.现就职于微软(Microsoft),曾在易安信(EMC)和太阳微系统(Sun Microsystems)任软件工程师.先后参与过聊天机器人.大数 ...

  4. 为 AI 初学者打造的《机器学习极简入门》面世了!

    随着人工智能技术的发展,机器学习已成为软件 / 互联网行业的常用技能,并开始向更多行业渗透.对越来越多的 IT 技术人员及数据分析从业者而言,机器学习正在成为必备技能之一. 今天我们就来聊聊机器学习的 ...

  5. tensorflow平台极简方式_TensorFlow极简入门教程

    原标题:TensorFlow极简入门教程 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.本文介绍了TensorFlow 基础,包括静态计 ...

  6. pyecharts极简入门教程

    作者:luanhz 来源:小数志 导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和 ...

  7. pyecharts x轴字体大小调整_pyecharts极简入门教程

    导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和基本图表制作是足够的,但二者的一个 ...

  8. 今日推荐课程:机器学习极简入门

    课程介绍 本达人课针对机器学习初学者,从机器学习.深度学习最基本的原理及学习意义入手,以模型为驱动,带领大家吃透几个最经典的机器学习模型--学习这些模型的原理.数学推导.训练过程和优化方法. 本课为每 ...

  9. python函数五要素_机器学习极简入门

    首先,我们来看下当前机器学习领域招聘市场行情. 上面图例中所有带有"算法"."人工智能"."数据挖掘"."NLP"字样的 ...

最新文章

  1. 深入学习Redis持久化
  2. 图神经网络概述:Graph Neural Networks
  3. boost::endian模块实现buffer的测试程序
  4. Akka(9): 分布式运算:Remoting-远程构建式
  5. 【还是回来了】博客搬家--https://cangbean.github.io
  6. 开源运维管理软件排名_车主无忧:为什么放弃开源Kafka?
  7. python中实现上下文管理器的两种方法
  8. python webbrowser_Python中webbrowser的用法
  9. 大型网站技术架构读书笔记
  10. c246芯片组服务器主板,支持Xeon E-2100系列:ASRock 华擎 发布 C246M WS 主板
  11. 向量的夹角余弦公式_向量的夹角公式是什么?
  12. java调用WebService接口工具
  13. 【解决方案 六】---在VS2015里使用ILDasm
  14. 走向世界中的我国摄影测量与遥感 ——访中国测绘学会理事长、国家测绘局原副局长杨凯
  15. 我的免费版mbti职业性格测试
  16. 5G NTN进展简述
  17. 项目开发-工具-版本控制Git完整系统化使用说明
  18. everything增强神器,文档搜索效率何止翻倍!
  19. TPLINK WR941N V2_090803 路由器 后门
  20. 智慧消防解决方案-全套大合集

热门文章

  1. 【笔记】ARM指令系统
  2. 计算机用户注销后不见了,注销当前用户后 Win10找不到Administrator用户登录选项怎么解决?...
  3. zzlibsvm / liblinear中的交叉训练技巧
  4. 网页文档下载不了怎么办 亲测可用!建议收藏!
  5. quartz简单配置
  6. 磁盘类型由动态转换成基本
  7. java jisuan da xie zi mu ge shu_Java 实现汉字转换为拼音的实例
  8. [初学Spring Boot](1):打不开localhost:8080/hello
  9. ISA SERVER常见问题总结专用贴(转)
  10. Red Panda DEV-C++更新到6.7.5啦