数据挖掘流程
(一)数据读取
- 读取数据,并进行展示
- 统计数据各项指标
- 明确数据规模与要完成的任务
(二)特征理解分析
- 单特征分析,逐个变量分析其对结果的影响
- 多变量统计分析,综合考虑多种情况影响
- 统计绘图得出结论
(三)数据清洗与预处理
- 对缺失值进行填充
- 特征标准化/归一化
- 筛选有价值的特征
- 分析特征之间的相关性
(四)建立模型
- 特征数据与标签准备
- 数据集切分
- 多种建模算法对比
- 集成策略等方案改进
杂记
数据特征分为:连续值和离散值
- 离散值:性别(男、女)、登船地点
- 连续值:年龄、船票价格
特征相关性的热度图
)
首先要注意的是,只有数值特征进行比较
正相关,如果特征A的增加导致特征B的增加,那么它们呈正相关,值1表示完全正相关。
负相关,如果特征A的增加导致特征B的减少,则呈负相关,值-1表示完全负相关。
现在我们说两个特征是高度相关的,所以一个增加导致另一个增加,这意味着两个特征都包含高度相似的信息,并且信息很少或没有变化,这样的特征对我们来说是没有价值的!
经验来说,一般相关度超过30%就应该慎重考虑
集成
集成是提高模型的精度和性能的一个很好的方式,简单的说,是各种简单模型的结合创造了一个强大的模型。
- 随机深林类型的,并行的集成
- 提升类型
- 堆叠类型
数值特征转换
LabelEncoder
from sklearn.preprocessing import LabelEncoder
gle = LabelEncoder()
genre_labels = gle.fit_transform(vg_df['Genre'])
genre_mappings = (index:label for index,label in enumerate(gle.classes_))
映射转换
vg_df['GenreLabel'] = genre_labels
# vg_df[['Name','Platform','Year','Genre','GenreLabel']].iloc[1:7]
map
gen_ord_map = {'Gen 1':1,'Gen 2':2,'Gen 3':3,'Gen 4':4,'Gen 5':5,'Gen 6':6}
poke_df['GenerationLabel'] = poke_df['Generation'].map(gen_ord_map)
OneHotEncoder
from sklearn.preprocessing import OneHotEncoder
# encode generation labels using one-hot encoding scheme
gen_ohe = OneHotEncoder()
gen_feature_arr = gen_obe.git_transform(poke_df[['Gen_label']]).toarray()
gen_feature_labels = list(gen_le.classes_)
gen_feature = pd.DataFrame(gen_feature_arr,columns=gen_feature_labels)
# encode legendary status labels using one-hot encoding scheme
leg_one = OneHotEncoder()
leg_feature_arr = leg_ohe.fit_transform(poke_df[['Lgnd_Label']]).toarray()
leg_feature_labels = ['Legendary_'+str(cls_label) for cls_label in leg_le.classes_]
leg_features = pd.DataFrame(leg_feature_arr,columns=leg_feature_labels)
poke_df_ohe = pd.concat([poke_df_sub,gen_features,leg_features],axis=1)
columns = sum([['Name','Generation','Gen_Label'].gen_feature_labels,['Legendary','Lgnd_Label'].leg_feature_labels],[])
poke_df_ohe[columns]
get_dummy
自动判断,将离散值数据分组
gen_dummy_features = pd.get_dummies(poke_df['Generation'])