[TOC]
可以进行多分类,但是无法指定分类的个数,这个与DBScan一样
from sklearn import tree
dtr = tree.DecisionTreeRegressor(max_depth = 3) #采用的决策树回归模型,max_depth = 3表示层数
dtr.fit(housing.data[:, [6, 7]], housing.target) #传入数据,进行计算
#随机森林
from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor( random_state = 42)
rfr.fit(data_train, target_train)
rfr.score(data_test, target_test)
#GridSearchCV:进行参数的自动选择
from sklearn.model_selection import GridSearchCV
#设置参数选择范围:min_samples_split:每个叶子节点的样本个数下限;n_estimators:随机森林中树的个数
tree_param_grid = { 'min_samples_split': list((3,6,9)),'n_estimators':list((10,50,100))}
#相当于是对所有的参数进行了遍历,cv=5表示5折交叉验证
#训练集;建立模型
#验证集:调整参数
#测试集:测试性能
grid = GridSearchCV(RandomForestRegressor(),param_grid=tree_param_grid, cv=5)
grid.fit(data_train, target_train) #训练
grid.cv_results_, grid.best_params_, grid.best_score_
rfr = RandomForestRegressor( min_samples_split=3,n_estimators = 100,random_state = 42)
rfr.fit(data_train, target_train)
rfr.score(data_test, target_test)
经典的二分类算法,多分类也可以。
监督学习
关于支持向量机(SVM)的高斯核和惩罚因子C的理解(简单易懂)
C是误差惩罚系数。C越大,所允许的误差就越小;C越小,所允许的误差就越大。一个适当的C,可以使模型有一个较好的泛化能好。
在采用高斯核(非线性核)的时候有gamma参数。gamma控制着模型的复杂程度,gamma越大模型越复杂,泛化能力越差。
可视化效果展示:
优点:简单,快速,适合常规数据集 | 缺点:很难发现任意形状的簇 |
---|---|
![]() |
![]() |
from sklearn.cluster import DBSCAN
db = DBSCAN(eps=10, min_samples=2).fit(X) #指定半径eps和密度阈值min_samples
labels = db.labels_
k-means效果 | GMM效果 |
---|---|
![]() |
![]() |
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
# LDA
sklearn_lda = LDA(n_components=2) #降维的维度
X_lda_sklearn = sklearn_lda.fit_transform(X, y) #导入相应的数据集及标签
X_lda_sklearn
使用的算法工具包:surprisr库官网
基于用户 | 基于商品 |
---|---|
![]() |
![]() |
一般使用基于商品的较多,因为商品的属性一般商家会打上很多的标签,使得数据不那么稀疏。
使用一个中间变量(隐含因子)将用户和物品分别联系在一起,R是一个用户对物品的打分矩阵。