机器学习 笔记(一)

概念&基础

流程:
在这里插入图片描述
fit就是拟合

分类任务:
二分类:不是0就是1
多分类:数字识别、图像识别、风险评级
多标签分类:多种类型进行归类
回归任务: 结果是一个连续数字的值,而非一个类别。

监督学习: 给机器的训练数据拥有“标记”或者“答案”。一般用于分类、回归
非监督学习: 给机器的训练数据没有“标记”或者“答案”。一般用于聚类分析、降维、异常检测
半监督学习: 一部分数据有答案,另一部分数据没有。先用非监督学习对数据进行处理,再用监督学习进行训练和预测
增强学习: 根据周围环境的情况,采取行动,根据采取行动的结果,学习行为方式。

欠拟合: 不能完整表述数据关系
过拟合: 过多的表达了数据间的噪音关系


Numpy

import numpy as np
np.array  np.dtype  np.zeros  np.full  np.arange  np.linspace  
np.random.randint  np.random.seed  np.random.random()  np.random.normal()
axis(0指行,1指列) 

# 合并拼接
np.concatenate([x,y])
np.vstack([x,y])  np.hstack([x,y])

# 分割
np.split()  np.vsplit()  np.hsplit()

# 运算
A.dot(B) 乘积
A.T 转置
np.tile() 堆叠
np.linalg.inv()  矩阵的逆
np.linalg.pinv() 伪逆矩阵
np.sum() .min()  .max() .prod()乘积 .mean() .median() .percentile()百分位
np.var()方差  .std()标准差

# 索引
np.argmin() 最小值索引  argsort() 元素索引
np.shuffle() 打乱顺序   np.sort() 
np.partition()  argpartition()

# fancy indexing
np.count_nonzero()  np.any() np.all() 

Matplotlib

import matplotlib.pyplot as plt
# 折线图
plt.plot(x,y,color="颜色",linestyle="线性",label="图示")
plt.show()
plt.xlim()  ylim()  xy轴的范围
plt.axis([x0,x1,y0,y1])  调节xy轴的范围
plt.xlabel()  ylabel()  xy标签
plt.legrnd()  显示图例
plt.title() 标题

# 散点图
plt.scatter(x,y,alpha="透明度")

#bar 条形图
plt.bar()

# 直方图
plt.hist()

数据预处理

数据归一化

数据分布没有明显边界:均值归一化(StandardScaler
数据分布有明显边界:最值归一化(MinMaxScaler

StandardScaler

# 测试集必须使用训练集的均值和方差,即 standardScalar.fit(X_train) 后的数据
from sklearn.preprocessing import StandardScaler
standardScalar = StandardScaler()
standardScalar.fit(X_train)
standardScalar.mean_    均值
standardScalar.scale_   方差
standardScalar.transform(X_train)  归一化

MinMaxScaler

from sklearn.preprocessing import MinMaxScaler
minmaxscaler = MinMaxScaler()
minmaxscaler.fit(X_train)
X_train = minmaxscaler.transform(X_train)
X_test_standard = minmaxscaler.transform(X_test) 
kNeighbors = KNeighborsClassifier(n_neighbors=3)
kNeighbors.fit(X_train,y_train)
kNeighbors.score(X_test_standard, y_test)

KNN

附近最近的k个点,解决分类问题,1最好,0最差
需要对数据进行归一化处理
缺点:维数灾难、不可解释、容易受异常值的影响
距离计算方式:欧拉距离、曼哈顿距离、明可夫斯基距离-------具体算法自行百度

KNeighborsClassifier 超参数

参数:
        n_neighbors: int, 可选参数(默认为 5),查询的默认邻居的数量

        weights(权重): str or callable(自定义类型), 可选参数(默认为 ‘uniform’)
                用于预测的权重函数。可选参数如下:
                       - ‘uniform’ : 统一的权重,就是比较个数占比
                       - ‘distance’ : 权重点等于他们距离的倒数。就是比较距离的倒数,选择更近的
                       - [callable] : 自定义的方法

        algorithm(算法): {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, 可选参数(默认为 'auto')
        leaf_size(叶子数量): int, 可选参数(默认为 30)
                传入BallTree或者KDTree算法的叶子数量。此参数会影响构建、查询BallTree或者KDTree的速度,以及存储BallTree或者KDTree所需要的内存大小。 此可选参数根据是否是问题所需选择性使用。

         p: integer, 可选参数(默认为 2),距离算法的选择,1是曼哈顿距离,2是欧拉距离,其它是明可夫斯基距离
         
         metric(矩阵): string or callable, 默认为 ‘minkowski’,用于树的距离矩阵
         metric_params(矩阵参数): dict, 可选参数(默认为 None),给矩阵方法使用的其他的关键词参数。

         n_jobs: int, 可选参数(默认为 1)
                用于搜索邻居的,可并行运行的任务数量。如果为-1, 任务数量设置为CPU核的数量。

基本应用

from sklearn.neighbors import KNeighborsClassifier
kNN_classifier = KNeighborsClassifier(n_neighbors=6)
kNN_classifier.fit(X_train, y_train)
score = kNN_classifier.score(X_test,y_test)
y_pred = kNN_classifier
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值