欠拟合:模型没有很好的捕捉到数据特征、特征集过小导致模型不能很好的拟合数据。欠拟合本质上是对数据特征学习的不够(通俗讲就是,学的特征太少,我想要的特征并没有取到,)
过拟合:把训练数据学习的太彻底,以至于把噪声数据的特征也学习到了,特征集过大,这样就会导致在后期测试的时候不能够很好的识别数据,不能正确的分类,模型泛化能力太差。(通俗讲就是,x学习到的特征过于多,把不需要的东西学到,我不想要的样品特征也取到了)
过拟合处理方法:增加训练数据:更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。 2. 降维:即丢弃一些不能帮助我们正确预测的特征。 3. 正则化(regularization)的技术,保留所有的特征,但是减少参数的大小(magnitude),它可以改善或者减少过拟合问题。 4. 集成学习方法:集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。
欠拟合的处理方法:添加新特征,当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。 2. 增加模型复杂度:简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。 3. 减小正则化系数:正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数
TP(真正例)----将正类预测为正类数 FP(假正例)----将反类预测为正类数
TN(真反例)----将反类预测为反类数 FN(真反例)----将正类预测为反类数
计算查全率P和查准率R :P=TP/TP+FP R=TP/TP+FN
查准率:想要查找的更准确,就会忽略数量,提高准确率
查全率:想要查找的全面,就会忽略准确值,数量上去了,但是准确度较低。
K近邻算法(KNN,k-Nearest Neighbor),每个样本都可以用它的最接近的K个邻近值来代表。
算法说明: ①输入没有标签的新数据,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。
②一般来说,只选择样本数据集中k个最相似的数据。k一般不大于20,最后选择k个数据中出现次数最多的分类,作为新数据的分类。
图例说明:就i是每个样本,用他最邻近的k值来代表。
分类的标签 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值的数据标准化
用法:就是创建一个数组,算出均值和方差
就是均值和方差。