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

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

一、流程

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

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. django 的基础设计

    一.web程序工作流程 二.django  的基础介绍 目的:了解Django框架的作用和特点 作用: 简便.快速的开发数据库驱动的网站 Django的优势 快速开发 MVT 功能齐全 Django学 ...

  2. 故意使用free掉的内存的一个实验( 常量区/栈)

    故意使用free掉的内存的一个实验 考虑一下两种声明 struct stuff{ char home[10]; int num; char name[10]; }; struct stuff{ cha ...

  3. Mac 效率工具必备神器 —— Alfred

    前言 alfred 这款软件称为「神器」真是当之无愧.今天专门总结一下,作为之前 Mac 配置教程-开发篇 的补充. 需要说明的是,如果你发现我介绍的功能无法使用,则代表需要花钱购买它的 Powerp ...

  4. 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现

    075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...

  5. vue : 无法加载文件 C:\Users\Lenovo\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。

    第一步:用管理员身份打开 第二步:执行:set-ExecutionPolicy RemoteSigned 选择Y或A,回车

  6. PowerShell 语法

    PowerShell 之 教程 PowerShell 中变量.函数命名等不区分大小写,但字符串区分大小写 powershell 脚本文件 扩展名为 .ps1 调用操作符 & + Cmd Cmd ...

  7. win10简单方法安装杜比v4音效!win10 1909适用!

    先下载这个! 链接: https://pan.baidu.com/s/1zAOOf-1aCJsjBgy36SiGWA 密码: s9n7 这个是杜比V4文件,257MB大小,适用32位64位系统!下 载 ...

  8. 多测师_git和github_004

    git Git(读音为/gɪt/.),是目前世界上最先进的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Linux 内核 ...

  9. Rust之路(0)

    Rust--一个2012年出现,2015年推出1.0版本的"年轻"语言.在 2016 至 2018 年的 stack overflow 开发人员调查中,被评比为 "最受欢 ...

  10. beego路由

    router.go package routersimport ( "beego01/controllers" "github.com/astaxie/beego&quo ...