数据挖掘项目(三)
【模型构建(2天)】
用逻辑回归、svm和决策树;随机森林和XGBoost进行模型构建,评分方式任意,如准确率等。(不需要考虑模型调参)
查了一下博客建议。暂且贴在这做参考。
- 使用LR试一把总归不会错的,至少是个baseline
- 看看决策树相关模型例如随机森林,GBDT有没有带来显著的效果提升,即使最终没有用这个模型,也可以用随机森林的结果来去除噪声特征
- 如果你的特征空间和观测样本都很大,有足够的计算资源和时间,试试SVM吧,
一、决策树
定下一个最初的质点,从该点出发、分叉。(由于最初质点有可能落在边界值上,此时有可能会出现过拟合的问题。
二、SVM
svm是除深度学习在深度学习出现之前最好的分类算法了。它的特征如下:
(1)它既可应用于线性(回归问题)分类,也可应用于非线性分类;
(2)通过调节核函数参数的设置,可将数据集映射到多维平面上,对其细粒度化,从而使它的特征从二维变成多维,将在二维上线性不可分的问题转化为在多维上线性可 分的问题,最后再寻找一个最优切割平面(相当于在决策数基础上再寻找一个最优解),因此svm的分类效果是优于大多数的机器学习分类方法的。
(3)通过其它参数的设置,svm还可以防止过拟合的问题。
推荐学习博客(哒哒师兄大大地推荐的喔~):支持向量机通俗导论(理解SVM的三层境界)
三、随机森林
为了防止过拟合的问题,随机森林相当于多颗决策树。
四、朴素贝叶斯
要推事件A发生的概率下B发生的概率(其中事件A、B均可分解成多个事件),就可以通过求事件B发生的概率下事件A发生的概率,再通过贝叶斯定理计算即可算出结果。
五、逻辑回归
(离散型变量,二分类问题,只有两个值0和1)
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 逻辑回归
ltc = LogisticRegression()
ltc.fit(x_train, y_train)
predicted = ltc.predict(x_test)
accuracy_score(y_test, predicted)
# svm
svc = SVC()
svc.fit(x_train, y_train)
predicted = svc.predict(x_test)
accuracy_score(y_test, predicted)
# 决策树
dtc = DecisionTreeClassifier()
dtc.fit(x_train, y_train)
predicted = dtc.predict(x_test)
accuracy_score(y_test, predicted)
# 随机森林
rfc = RandomForestClassifier()
rfc.fit(x_train, y_train)
predicted = rfc.predict(x_test)
accuracy_score(y_test, predicted)
# xgboost
xgb = XGBClassifier()
xgb.fit(x_train, y_train)
predicted = xgb.predict(x_test)
accuracy_score(predicted, y_test)
参考博客
https://www.cnblogs.com/flippedkiki/p/7209076.html?utm_source=itdadao&utm_medium=referral
https://blog.youkuaiyun.com/weixin_43989326/article/details/88254244
https://blog.youkuaiyun.com/tianyaleixiaowu/article/details/80709239