标准机器学习的开发编程流程

关注公众号“轻松学编程”了解更多。

一、流程

标准机器学习的开发编程流程:

1、获取数据(爬虫、数据加载、业务部门获取)

2、数据建模(摘选样本数据(特征、目标))

3、数据清洗(异常值检测和过滤)

4、特征工程(归一化处理:提高算法模型的精度)

​ 归一化目的:使得每种特征数据的量级(权重)保持大致一致

​ 归一化方法(常用):1.普通归一化处理 2. 区归一化 处理 3.使用函数

5、模型选择(分类、回归)

6、模型评估(打分,分类边界图,残差直方图)

7、算法调优(调整模型对象的参数值)

8、绘图

注意:以下命令都是在浏览器中输入。
cmd命令窗口输入:jupyter notebook
打开浏览器输入网址http://localhost:8888/

二、预测年收入是否大于50K美元

需求:读取adult.txt文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50 。

说明:获取年龄、教育程度、职位、每周工作时间作为机器学习数据 获取薪水作为对应结果 。

1、导包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt from pandas import DataFrame,Series #创建K-近邻算法模型
from sklearn.neighbors import KNeighborsClassifier
#对模型进行评分
from sklearn.model_selection import train_test_split #内嵌画图
%matplotlib inline

2、获取数据

data=pd.read_csv(r'./adults.txt')

3、数据建模

3.1 摘取特征数据

features=data[['age','education_num','occupation',
'hours_per_week']]
features.head()

由于特征数据中有字符串型数据,需要转换成实质性数据才能参与运算。

3.1.1 数据转换

将职业中的String类型数据转换为Number。

思路:

  • 获取职业种类n,然后根据创建一个n行n列的对角矩阵;
  • 对职业列表中的每一种职业进行映射,得到一个n列的一维数组;
  • 把职业这一列拆分成n列;
  • 把特征数据的所有列转换成m列1行的二维数组
  • 把二维数组合并形成新的特征数据(模型运算时需要的是二维数组)
#获取特征数据中职业有几种
unique=features['occupation'].unique()
occ_size=unique.size
# 把df中的某一列字符串转成对角矩阵
dm=np.eye(occ_size)
def str2Num(occ):
global dm
#获取当前职业在数组unique中的下标
index=np.argwhere(occ==unique)[0][0]
return dm[index] #对职业进行映射
features['occupation']=features.occupation.map(str2Num)
features.head()

#features['occupation'].unique().size的值为15
# occupation现在是一个1行15列的一维数组,把occupation分拆成15列,
#然后把每一列级联
occ1=features['occupation'][0]
for item in features['occupation'][1:]:
occ1=np.concatenate((occ1,item))
#转成二维数组
occupation=occ1.reshape(-1,15)
ages=features['age'].reshape(-1,1)
education_nums=features['education_num'].reshape(-1,1)
hours_per_week=features['hours_per_week'].reshape(-1,1)
#把每一列级联
new_features=np.hstack((occupation,h_age_edu,hours_per_week))
new_features

3.2 摘取目标数据

target=data['salary']
target.head()

4、模型选择

选择分类模型来训练。

#random_state=1 : 固定随机状态种子
x_train,x_test,y_train,y_test=train_test_split(new_features,
target,
test_size=0.2,
random_state=1)

训练模型

#k先取值为5,可根据后面评分高低调优
knn=KNeighborsClassifier(n_neighbors=5)
#训练模型
knn.fit(x_train,y_train)

5、模型评分

#评分
knn.score(x_test,y_test)

6、算法调优(调整模型对象的参数值)

knn=KNeighborsClassifier(n_neighbors=20)
#训练模型
knn.fit(x_train,y_train)
#重新评分
knn.score(x_test,y_test)

7、预测

knn.predict(x_test)

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

关注我,我们一起成长~~

python机器学习的开发流程的更多相关文章

  1. python 完整项目开发流程

    1. 安装 python    2. 安装virtualenvwrapper    3. 虚拟环境相关操作    4. 进入虚拟环境, 安装django    5. 安装编辑器    6. 安装mys ...

  2. 五款实用免费的Python机器学习集成开发环境(5 free Python IDE for Machine Learning)(图文详解)

    前言 集成开发环境(IDE)是提供给程序员和开发者的一种基本应用,用来编写和测试软件.一般而言,IDE 由一个编辑器,一个编译器(或称之为解释器),和一个调试器组成,通常能够通过 GUI(图形界面)来 ...

  3. python全栈开发-Day2 布尔、流程控制、循环

    python全栈开发-Day2 布尔 流程控制 循环   一.布尔 1.概述 #布尔值,一个True一个False #计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人 ...

  4. python 面向对象终极进阶之开发流程

    好了,你现在会了面向对象的各种语法了,  但是你会发现很多同学都是学会了面向对象的语法,却依然写不出面向对象的程序,原因是什么呢?原因就是因为你还没掌握一门面向对象设计利器, 此刻有经验的人可能会想到 ...

  5. 《python机器学习—预测分析核心算法》:构建预测模型的一般流程

    参见原书1.5节 构建预测模型的一般流程 问题的日常语言表述->问题的数学语言重述重述问题.提取特征.训练算法.评估算法 熟悉不同算法的输入数据结构:1.提取或组合预测所需的特征2.设定训练目标 ...

  6. Python各个岗位的开发流程

     根据张大美女提供资料微修改,在这谢谢张大美女! 1.python软件开发工程师 1.1 项目启动会 说明项目目标.阶段划分.组织结构.管理流程等关键事项. 1.2 需求调研 由用户提出,描述产品的功 ...

  7. Python基础之模块:7、项目开发流程和项目需求分析及软件开发目录

    一.项目开发流程 1.项目需求分析 明确项目具体功能: 明确到底要写什么东西,实现什么功能,在这个阶段的具体要询问项目经理和客户的需求 参与人员: 产品经理.架构师.开发经理 技术人员主要职责: 引导 ...

  8. python开发流程及项目目录规范

    # 项目开发流程 1.调研 2.需求分析   ---产品经理 3.任务分配   ---项目经理 4.写项目demo   ---项目经理.架构师.程序猿 5.架构分析   ---项目经理.架构师 6.编 ...

  9. 2016年GitHub排名前20的Python机器学习开源项目(转)

    当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...

随机推荐

  1. 百度地图四(Android百度地图Poi检索开发总结)

    https://blog.csdn.net/wenzhi20102321/article/details/54575999

  2. java.lang.illegalArgumentException异常

    今天在使用spring3.2的时候,配置好注解开发后,运行出现异常 java.lang.illegalArgumentException 经查为 JRE 版本域spring3.2不兼容所致, 将项目J ...

  3. mapreduce的一些简单使用

    一.键值对RDD的创建 1.从文件中加载 /opt目录下创建wordky.txt文件. wordky.txt文件中输入以下三行字符: Hadoop is good Spark is fast Spar ...

  4. MATLAB中conv2的详细用法 (以及【matlab知识补充】conv2、filter2、imfilter函数原理)

    转载: 1.https://blog.csdn.net/jinv5/article/details/52874880 2.https://blog.csdn.net/majinlei121/artic ...

  5. const放在函数前后的区别

    转载:const放在函数前后的区别 一.const修饰指针 int b = 500; 1.const int * a = & b; 2.int const * a = & b; 3.i ...

  6. Activity的常用控件

    TimerPick(时间控件)public Integer getCurrentHour() //返回当前设置的小时public Integer getCurrentMinute()//返回当前设置的 ...

  7. Spring的BeanFactory是什么?

    什么是BeanFactory? 提到Spring,总是让人第一时间想起IOC容器,而IOC容器的顶层核心接口就是我们的BeanFactory,如果能够理解BeanFactory的体系结构想必能让我们对 ...

  8. 深入理解golang:Context

    一.背景 在golang中,最主要的一个概念就是并发协程 goroutine,它只需用一个关键字 go 就可以开起一个协程,并运行. 一个单独的 goroutine运行,倒也没什么问题.如果是一个go ...

  9. minikube dashboard报503的错误

    minikube start之后,minikube dashboard启动web界面报503错误 解决方案,删除掉c盘用户目录下的.kube和.minikube目录,重新启动,具体什么原因导致的呢,也 ...

  10. RHSA-2017:2473-重要: 内核 安全和BUG修复更新(需要重启、存在EXP、本地提权)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...