一些机器学习的基础知识

  • 欠拟合与过拟合概念

欠拟合:模型没有很好的捕捉到数据特征、特征集过小导致模型不能很好的拟合数据。欠拟合本质上是对数据特征学习的不够(通俗讲就是,学的特征太少,我想要的特征并没有取到,)

过拟合:把训练数据学习的太彻底,以至于把噪声数据的特征也学习到了,特征集过大,这样就会导致在后期测试的时候不能够很好的识别数据,不能正确的分类,模型泛化能力太差。(通俗讲就是,x学习到的特征过于多,把不需要的东西学到,我不想要的样品特征也取到了)

  • 欠拟合与过拟合的处理方式

过拟合处理方法:增加训练数据:更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。 2. 降维:即丢弃一些不能帮助我们正确预测的特征。 3. 正则化(regularization)的技术,保留所有的特征,但是减少参数的大小(magnitude),它可以改善或者减少过拟合问题。 4. 集成学习方法:集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。

欠拟合的处理方法:添加新特征,当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。 2. 增加模型复杂度:简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。 3. 减小正则化系数:正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数

  • 模型评估

TP(真正例)----将正类预测为正类数        FP(假正例)----将反类预测为正类数

TN(真反例)----将反类预测为反类数           FN(真反例)----将正类预测为反类数

计算查全率P和查准率R :P=TP/TP+FP   R=TP/TP+FN

   ​​​​查准率:想要查找的更准确,就会忽略数量,提高准确率

查全率:想要查找的全面,就会忽略准确值,数量上去了,但是准确度较低。

  • KNN:K近邻算法

K近邻算法(KNN,k-Nearest Neighbor),每个样本都可以用它的最接近的K个邻近值来代表。

算法说明: ①输入没有标签的新数据,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。

②一般来说,只选择样本数据集中k个最相似的数据。k一般不大于20,最后选择k个数据中出现次数最多的分类,作为新数据的分类。

 图例说明:就i是每个样本,用他最邻近的k值来代表。

 二维空间里的欧氏距离公式:          

· 三维空间里的欧氏距离公式:          

· n 维空间里的欧氏距离公式:

 分类的标签 iris.target   特征  iris.feature_names  类别  iris.target_names

划分训练集和测试集 x_train     x_test      y_train     y_test = train_test_split(iris.data,iris.target,test_size=0.3) 

训练集得分     train_score = knn.score(x_train,y_train)

测试集得分     test_score = knn.score(x_test,y_test)

预测y的值     y_pred = knn.predict(x_test)

  • 决策树

决策树概念:从根节点开始一步步走到叶子的节点,并且所有的数据最终都会落到叶子的节点,既可以做分类也可以做回归。

根节点:就是第一个选择点非叶子节点与分支:中间过程叶子节点:最终的决策结果。

熵公式:H(X)=- ∑ pi * logpi, i=1,2, ... , n

熵:熵值越大,那么也就代表着不确定性也就越大。若当p=0或p=1时,那么他的随机变量完全没有不确定性。若当p=1或者0.5的时候熵值就是最大,那么他的不确定性就最大。

如何决策一个节点的选择呢? 信息增益:表示特征X使得类Y的不确定性减少的程度。 (分类后的专一性,希望分类后的结果是同类在一起)

两个信息熵相减哪个差值越大,说明哪个就是根节点。

  • 函数

isnull()函数:判断数据集中缺失的,判断单元格是否为空

import pandas as pd
#
df = pd.read_csv(r'D:\pythonProject15\5week\lianxiti\taitanic_data.csv')
print(df['Age'])
print(df['Age'].isnull)

dropna():删除包含空字段的行,语法格式:DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

axis

how

thresh

subset

inplace

默认为 0,表示逢空值剔除整行。

 'any' :有一个数据为空就去掉整行。

'all' :所有数据都为空才去掉这整行。

设置需要多少非空值的数据才可以保留下来的。

设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。

如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。

missing_values = ["n/a","na","--"]
df = pd.read_csv(r'D:\pythonProject15\5week\lianxiti\taitanic_data.csv',na_values= missing_values)
new_df= df.dropna()
print(new_df)

fillna:用指定内容来替换一些空字段

mean:计算列的均值替换空单元格

median:计算列的中位数替换空单元格

  • 数据标准化

preprocessing.MinMaxScaler():最大最小值标准化

用法:

from sklearn.preprocessing import MinMaxScaler
data=[[1,2],[3,4],[5,6]]
scaler = MinMaxScaler()##调用接口
scaler = scaler.fit(data) ###对data数组生成最大最小值
result=scaler.transform(data)###导出最终的结果
print(result)

算法过程就是:X-min/man-min

运行结果:

 preprocessing.StandardScaler( )  Z值的数据标准化

用法:就是创建一个数组,算出均值和方差

就是均值和方差。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值