导入类库

 import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier

线性回归

 def price_predict():
# 数据有三个特征:距离地铁距离、附近小学数量、小区绿化率
X = np.array([[500.0, 3.0, 0.3], [1000.0, 1.0, 0.6], [750.0, 2.0, 0.3], [600.0, 5.0, 0.2], [1200.0, 1.0, 0.6]])
# 具有三个特征的房屋对应的房价
Y = np.array([10000, 9000, 8000, 12000, 8500]) # 标准化,按列转化,转化到数据均值为0方差为1的标准分布内
std_x = StandardScaler()
x_train = std_x.fit_transform(X)
std_y = StandardScaler()
y_train = std_y.fit_transform(Y.reshape(-1, 1)) # 构建线性预测模型
lr = LinearRegression()
# 模型在历史数据上进行训练,Y.reshape(-1,1)将Y变为二维数组,fit函数要求二维数组
lr.fit(x_train, y_train) # 使用训练模型预测新房屋价格
x_predict = std_x.transform(np.array([[1300, 3.0, 0.4]]))
print(std_y.inverse_transform(lr.predict(x_predict)))

KNN

 # K近邻分类(K表示以最近的几个邻居作为分类的指标)
# KNN表示了物以类聚人以群分的基本思考方法,最近的K个邻居是什么类别,预测样本就会被划为该类别
def knn_predict_rev():
# 数据理解为二维坐标上的6歌点
X = np.array([[1.0, 1.0], [1, 1.5], [0.5, 1.5], [3.0, 3.0], [3.0, 3.5], [2.8, 3.1]])
# 6个点的类别,按顺序和X依次对应
Y = np.array([0, 0, 0, 1, 1, 1]) # n_neighbors就是KNN中的K
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X, Y)
print(knn.predict(np.array([[2.0, 3.0]])))

决策树

 def decide_play():
'''
ID3
:return:
'''
df = pd.read_csv('dtree.csv')
# 将数据转换为字典格式,orient='record'参数指定数据格式为{column:value}的形式
# 一个字典对应一行数据
dict_train = df.loc[:, ['Outlook', 'Temperatur', 'Humidity', 'Windy']].to_dict(orient='record')
# 如果pandas从DataFrame取出一列数据,该数据类型会变成Series
dict_target = pd.DataFrame(df['PlayGolf'], columns=['PlayGolf']).to_dict(orient='record') # 训练数据字典向量化
dv_train = DictVectorizer()
x_train = dv_train.fit_transform(dict_train)
# 目标数据字典向量化
dv_target = DictVectorizer()
y_target = dv_target.fit_transform(dict_target) # 创建决策树
d_tree = DecisionTreeClassifier()
# 训练数据
d_tree.fit(x_train, y_target)
data_predict = {
'Humidity': 85,
'Outlook': 'sunny',
'Temperatur': 85,
'Windy': False
}
# 标准化要预测的数据
x_data = dv_train.transform(data_predict)
# 预测数据并转换为原格式
print(dv_target.inverse_transform(d_tree.predict(x_data)))

机器学习——线性回归-KNN-决策树(实例)的更多相关文章

  1. 机器学习之KNN算法

    1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属 ...

  2. 机器学习算法·KNN

    机器学习算法应用·KNN算法 一.问题描述 验证码目前在互联网上非常常见,从学校的教务系统到12306购票系统,充当着防火墙的功能.但是随着OCR技术的发展,验证码暴露出的安全问题越来越严峻.目前对验 ...

  3. 【机器学习】kNN

    机器学习算法--kNN 目录 机器学习算法--kNN 1. 算法原理 2. 算法实现 2.1 kd-tree构造 2.2 kd-tree查询 2.3 kNN算法实现 3. 算法测试 Ref 1. 算法 ...

  4. 基于Docker的TensorFlow机器学习框架搭建和实例源码解读

    概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...

  5. 机器学习模型| 监督学习| KNN | 决策树

    分类模型 K近邻 逻辑斯谛回归 决策树 K近邻(KNN) 最简单最初级的分类器,就是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类K近邻(k ...

  6. python机器学习---线性回归案例和KNN机器学习案例

    散点图和KNN预测 一丶案例引入 # 城市气候与海洋的关系研究 # 导包 import numpy as np import pandas as pd from pandas import Serie ...

  7. 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参

    上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...

  8. 【Python机器学习实战】决策树与集成学习(五)——集成学习(3)GBDT应用实例

    前面对GBDT的算法原理进行了描述,通过前文了解到GBDT是以回归树为基分类器的集成学习模型,既可以做分类,也可以做回归,由于GBDT设计很多CART决策树相关内容,就暂不对其算法流程进行实现,本节就 ...

  9. 机器学习算法K-NN的一个使用实例:预测一个人是否患有糖尿病 (KNN-Predict whether a person will have diabetes or not )

    学习中...不断更新. 在糖尿病人的数据库中有几列是不能为0的 比如葡萄糖 胰岛素 身体指数和皮肤厚度.所以在数据预处理阶段需要对这些列的数据进行替换. remeber we did 12 minus ...

随机推荐

  1. CMDB资产管理系统开发【day26】:admin action

    本节目标 审核写到数据库,我就单独写一个如下的 页面 单机go后就跳转到如下图界面,我们这节课的目标就是写一个这样的页面 asset\admin.py部分代码 注释如下: class NewAsset ...

  2. windows上编译zlib-1.2.8

    MSVC编译 使用VS(x86)命令行工具进入到zlib根目录,执行 nmake -f win32/Makefile.msc ,在根目录下生成:zlib.lib(静态库)  zdll.lib(动态库的 ...

  3. Gram 矩阵与向量到子空间的距离

    设 $W$ 是 $n$ 维 Euclidean 空间 $V$ 的子空间, $\beta\in V$, 定义 $\beta$ 到 $W$ 的距离  $$\bex  \rd (\beta,W)=|\bet ...

  4. jQuery提示组件toastr(取代alert)

    给大家推荐一款jquery提示插件:toastr 它是一个可以取代alert的提示信息框,它在PC,移动设备上都有不错的UI效果. 具体使用方法如下: 1.首先在网页头站调用他需要的js和css文件. ...

  5. 2018年7月6日go语言学习

    Go是一门并发支持.垃圾回收的编译型系统编程语言. 特点:类型安全和内存安全 以非常直观和极低的方案实现高并发 高效的垃圾回收机制 快速编译 为多核计算机提供性能提升方案 Utf-8编码支持 Go源码 ...

  6. Python3:几行代码实现阶乘

    阶乘:一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1.自然数n的阶乘写作n!. #---------------------------------- 阶乘- ...

  7. 51nod 1016 水仙花数

    大水仙花数模板+1…… #include<stdio.h> #include<math.h> #include<queue> #include<vector& ...

  8. apache-jmeter-3.3的简单压力测试使用方法

    注: 本文参考:http://www.cnblogs.com/TankXiao/p/4045439.html http://blog.csdn.net/lan_shu/article/details/ ...

  9. 3D Slicer中文教程(四)—图像分割

    1.数据获取 (1)下载3D Slicer自带的样本数据 (2)选择自由的数据 (3)网上数据库等其他方式下载数据 2.分割工具 Segment Editor是一个用于分割的模块.细分(也称为轮廓)描 ...

  10. yum安装mysql

    安装 CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源 ...