Kaggle与机器学习流程

本文全面解析机器学习项目从数据预处理、特征工程到模型选择与评估的全过程,涵盖PCA、xgboost、sklearn等关键技术和工具,深入探讨特征选择、模型融合及超参数调优策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器学习解决问题的流程:
http://blog.csdn.net/han_xiaoyang/article/details/50469334
https://www.linkedin.com/pulse/approaching-almost-any-machine-learning-problem-abhishek-thakur/
xgboost:https://github.com/dmlc/xgboost,https://blog.csdn.net/qq_24519677/article/details/81809157
--------------------------------------------------------------

sklearn中文文档:http://scikitlearn.com.cn/

大数据的降维处理:PCA、random_project、t-SNE

特征工程
1. 数据预处理:http://scikitlearn.com.cn/0.21.3/40/
(1) 将数值型特征离散化:
(2) 将类别特征转化为编码:from sklearn.preprocessing import LabelEncoder, OneHotEncoder,在使用OneHotEncoder之前先用LabelEncoder把类别转化为数字
(3) 特征抽取(对文本类型):http://scikitlearn.com.cn/0.21.3/39/
将文本特征抽取特征:文本变量可以变成这种形式:text_data = list(X_train.apply(lambda x:'%s %s' % (x['column_1'], x['column_2']), axis=1))。from sklearn.feature_extraction import CountVectorizer, TfidfVectorizer,TfidfVectorizer比CountVectorizer要好
将文本转化为稀疏矩阵之后,进行奇异值分解,from sklearn.decomposition import TruncatedSVD(n_components=12)
2. 将特征组合在一起
(1)简单的组合(用于特征少)
稠密的特征用 X = np.hstack((x1, x2, ...))
稀疏的特征用from scipy import sparse || X = sparse.hstack((x1, x2, ...))
(2)复杂的组合(用于特征多,降维)
from sklearn.pipeline import FeatureUnion
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest
pca = PCA(n_components=10)【对于图像,从10-15个组件开始;对于其他类型数据,从50-60开始;只要算力足够,都不建议降维】
skb = SelectKBest(k=1)
combined_features = FeatureUnion([('pca', pca),('skb', skb)])
3. 高维数据处理:PCA、SVD、LDA、QDA
4.特征选择
http://scikitlearn.com.cn/0.21.3/14/
(1) 随机森林进行特征选择
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=100, n_jobs=-1)
clf.fit(X, y)
X_selected = clf.transform(X)
(2) 利用Gradient Boosting也可以特征选择,XGBoost也可以,可以对稀疏数据集进行特征选择
(3) 从正稀疏数据集中基于ch-2的特征选择
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
skb = SelectKBest(chi2, k=20)
skb.fit_transform(X, y)

模型选择:
    过拟合:验证分数比训练分数低很多
    刚好拟合:验证分数和训练分数差不多,且分数都比较高
    欠拟合:验证分数和训练分数差不多,且分数都很低
1. 不能随便将特征用在线性模型上,因为特征不是标准化的。可以将特征进行标准化
(1) 稀疏特征
使用StandardScaler,WITE_MEST设置为False(无需使用平均值)
(2) 稠密特征
归一化
2. 可以随便将特征用在树模型等非线性模型上

使用全局数据时:交叉验证:http://scikitlearn.com.cn/0.21.3/30/,对于分类问题,用from sklearn.cross_validation import StratfiedKFold;对于回归问题,用from sklearn.cross_validation import KFold
使用batch数据时:使用progressive validation,对同一个batch,训练前验证一次成绩为valid_score,训练后验证一次成绩为train_score。比如:第99次训练后,batch用第99次训练得出的模型得分train_score正常,然后到100次训练时,new_batch用第99次训练得出的模型得分比train_score低很多,则过拟合了

模型超参数选择:(GridSearch)
交叉验证:http://scikitlearn.com.cn/0.21.3/31/

模型状态评估:
绘制学习曲线:http://www.zybuluo.com/hanxiaoyang/note/545131

模型融合:(bagging、boosting)
http://scikitlearn.com.cn/0.21.3/12/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值