什么是机器学习? (基础篇)

本文介绍了机器学习的基础概念,包括特征值、目标值、样本和数据处理。讲解了特征工程的重要性,如特征提取、转换和降维。讨论了数据集的划分、模型训练与评估,特别是准确率作为关键指标。接着,阐述了监督学习中的回归和分类问题,以及无监督学习中的聚类。详细介绍了KNN算法及其应用,并展示了如何使用KNN进行模型训练和数据集划分。最后提到了模型评估、归一化、标准化以及网格搜索和交叉验证在模型调优中的作用。
摘要由CSDN通过智能技术生成

机器学习基础

  • 特征值:数据集中的一列(x)

  • 目标值:要预测的这一列(y)(连续值(0,1,2,3,4,5…)和离散值(类别型))

  • 样本:一行数据,数据集中有多少行数据就是有多少样本

[0,1,2,3] 向量

特征工程:决定模型预测的效果,对数据进行处理的过程

  • 特征提取
  • 特征转换
  • 降维

数据集的划分(历史数据=>y)(7:3,8:2,9:1)

  • 训练集(进行训练得到模型)
  • 测试集(检测训练的模型效果)
    • 真实的y值y_true
    • 模型可以得到一个预测的有值y_pred
    • y_true和y_pred进行对比就可以检查面模型的效果
    • 准确率:70%以上

机器学习分类

  • 监督学习(有目标值y)

    • 回归问题(目标值y是连续值)
      • 预测房价
      • 预测股票趋势
      • 预测公司的销量
    • 分类问题(目标值y是类别值)
      • 二分类和多分类
        • 是否是垃圾邮件
        • 用户是否流失
  • 无监督学习(没有目标值y)

    • 聚类(物以类聚人以群分)
      • 用户分群(用户画像)
    • 降维

机器学习工作流程【重点】

  • 获取数据
  • 数据的基本处理(耗时)
  • 特征工程(耗时)
    • 归一化和标准化
    • 降维
    • 数据集划分
    • 特征衍生
    • 特征交叉
  • 使用机器学习算法(训练模型)
  • 模型进行评估

过拟合和欠拟合

  • 过拟合:模型在训练集的效果好,在测试集或者未知数据的效果不好
    • 重新清洗数据
    • 增大训练的数据量
    • 采用正则化方法对参数施加惩罚
  • 欠拟合:模型在训练集和测试集或者未知数据的效果都不好
    • 添加其他特征项
    • 添加多项式特征
    • 减少正则化参数

KNN算法

knn算法适合用于做分类问题,二分类

也可以用来做回归问题

思想:取k个最近的点,通过这些点来对未知数据进行预测(分类) k值默认=5,一般1,3,5,7

  • KNN api用法
from sklearn.neighbors import KNeighborsClassifier

# 创建分类器
knn_clf = KNeighborsClassifier(n_neighbors=6)

# 模型训练fit()
knn_clf.fit(x,y)

# 模型预测predict()
knn_clf.predict(x1)
  • 划分数据集
from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(x,y,test_size=,random_state)
  • 分类模型的评估
#计算准确率
from sklearn.metrics import accuracy_score
#方式1:
accuracy_score(y_test,y_predict)
  • 归一化和标准化

作用:将所有数据映射到同一尺度,使不同单位或量级的特征能够进行比较和加权。

涉及到计算距离的算法,一定要进行归一化或者标准化【重点】

归一化:(X-Xmin)/(Xmax-Xmin) 将数据映射到[0,1]

标准化:(X-Xmean)/Xstd 数据均值为0,标准差为1

from sklearn.preprocessing import StandardScaler,MinMaxScaler

# 创建实例
minmax = MinMaxScaler()
minmax.fit_transform(X_train)
minmax.transform(X_test)

(8-1)/(11-1)=0.7

(61-1)/(101-1) = 0.6

  • 网格搜索和交叉验证

目的:让模型更加的准确可靠(模型调优)

sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)

  • 解释:对估计器的指定参数值进行详尽搜索
  • 参数:
    • estimator:估计器对象
    • param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}
    • cv:指定几折交叉验证
  • 方法:
    • fit:输入训练数据
    • score:准确率
  • 结果分析:
    • best_score_:在交叉验证中验证的最好结果
    • best_estimator_:最好的参数模型
    • cv_results_:每次交叉验证后的验证集准确率结果和训练集准确率结果
from sklearn.model_selection import GridSearchCV

#实例化预估器类
estimator = KNeighborsClassifier()
# 模型选择与调优——网格搜索和交叉验证
# 准备要调的超参数
param_dict = {"n_neighbors": [1, 3, 5],'weights':["uniform","distance"]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3)
# fit数据进行训练
estimator.fit(x_train, y_train)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值