机器学习——线性回归-KNN-决策树(实例)
导入类库
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-决策树(实例)的更多相关文章
- 机器学习之KNN算法
1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属 ...
- 机器学习算法·KNN
机器学习算法应用·KNN算法 一.问题描述 验证码目前在互联网上非常常见,从学校的教务系统到12306购票系统,充当着防火墙的功能.但是随着OCR技术的发展,验证码暴露出的安全问题越来越严峻.目前对验 ...
- 【机器学习】kNN
机器学习算法--kNN 目录 机器学习算法--kNN 1. 算法原理 2. 算法实现 2.1 kd-tree构造 2.2 kd-tree查询 2.3 kNN算法实现 3. 算法测试 Ref 1. 算法 ...
- 基于Docker的TensorFlow机器学习框架搭建和实例源码解读
概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...
- 机器学习模型| 监督学习| KNN | 决策树
分类模型 K近邻 逻辑斯谛回归 决策树 K近邻(KNN) 最简单最初级的分类器,就是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类K近邻(k ...
- python机器学习---线性回归案例和KNN机器学习案例
散点图和KNN预测 一丶案例引入 # 城市气候与海洋的关系研究 # 导包 import numpy as np import pandas as pd from pandas import Serie ...
- 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参
上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...
- 【Python机器学习实战】决策树与集成学习(五)——集成学习(3)GBDT应用实例
前面对GBDT的算法原理进行了描述,通过前文了解到GBDT是以回归树为基分类器的集成学习模型,既可以做分类,也可以做回归,由于GBDT设计很多CART决策树相关内容,就暂不对其算法流程进行实现,本节就 ...
- 机器学习算法K-NN的一个使用实例:预测一个人是否患有糖尿病 (KNN-Predict whether a person will have diabetes or not )
学习中...不断更新. 在糖尿病人的数据库中有几列是不能为0的 比如葡萄糖 胰岛素 身体指数和皮肤厚度.所以在数据预处理阶段需要对这些列的数据进行替换. remeber we did 12 minus ...
随机推荐
- Gym - 101350G Snake Rana(容器原理)
Old Macdonald wants to build a new hen house for his hens. He buys a new rectangular area of size N ...
- [APIO2007] 风铃
题目链接 可能是个树上 DP?指针真好玩 23333. 首先对于所有玩具如果有深度差超过 1 的就是无解(在这里贡献 WA * 3),所以 dfs 一遍记录深度是有必要的…… 然后如果有一个点的两颗子 ...
- maven wrapper使用本地maven
修改maven-wrapper.properties内容如下: #distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apa ...
- js常用数据类型(Number,String,undefined,boolean) 引用类型( function,object,null ),其他数据类型( 数组Array,时间Date,正则RegExp ),数组与对象的使用
js常用数据类型 数字类型 | 字符串类型 | 未定义类型 | 布尔类型 typeof()函数查看变量类型 数字类型 Number var a1 = 10; var a2 = 3.66; conso ...
- PHP中的常用数组操作方法
一.数组操作的基本函数 数组的键名和值array_values($arr); 获得数组的值array_keys($arr); 获得数组的键名array_flip($arr); 数组中的值与键名互 ...
- IDEA远程调试服务器代码
先在idea添加一个remote,host填服务器ip,port填监听服务器端口,默认5005 然后在服务器tomcat catalina.sh 添加(红色部分): JAVA_OPTS="$ ...
- 获取多<a/>标签id值的点击事件
<li> <div class="pic"> <c:if test="${userId != null }"> <a ...
- apache-jmeter-3.3的简单压力测试使用方法
注: 本文参考:http://www.cnblogs.com/TankXiao/p/4045439.html http://blog.csdn.net/lan_shu/article/details/ ...
- jenkins备份与恢复【转】
jenkins这里我通过thinbackup插件进行对jenkins的配置备份与恢复 1丶安装thinbackup插件 2丶系统管理选择thinbackup插件 3丶创建备份目录 mkdir /bac ...
- Beta冲刺(1/7)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(1/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 团队完成测试答辩 整理博客 复习接口 接下来的 ...