文章目录
一、数据集
- sklearn.datasets模块
直接数据集
数据集名称 | 调用方式 | 适用算法 | 数据规模 |
---|---|---|---|
波士顿房价 | load_boston() | 回归 | 506*13 |
鸢尾花 | load_iris() | 分类 | 150*4 |
糖尿病 | load_diabetes() | 回归 | 442*10 |
手写数字 | load_digits() | 分类 | 5620*64 |
Olivetti脸部图像数据集 | fetch_olivetti_faces() | 降维 | 400*64*64 |
新闻分类 | fetch_20newsgroups() | 分类 | - |
带标签的任丽娜数据及 | fetch_lfw_people() | 分类、降维 | - |
路透社新闻语料数据集 | fetch_rev1() | 分类 | 804414*47236 |
注意:小数据集可以直接使用,大数据集 要在调用时 程序自动下载(一次即可)
#波士顿房价
sklearn.datasets.load_boston #加载波士顿房价数据集
'''
重要参数:
return_X_y: 表示 是否返回targer(即 价格),默认为False,只返回data(即 特征/属性)
'''
#代码
from sklearn.datasets import load_boston
boston = load_boston()
print(boston.data.shape)
data, target = load_boston(return_X_y=True)
print(data.shape, target_shape)
#鸢尾花
sklearn.datasets.load_iris
'''
重要参数:
return_X_y: 若为Ture,则以 (data, target) 形式 返回数据;默认为False,表示以字典形式返回数据的全部信息(包括data 和 target)
'''
#代码
from sklearn.datasets import load_iris
iris = load_iris()
print(iris.data.shape)
print(iris.target.shape)
print(iris.target_names)
#手写数字数据集
sklearn.datasets.load_digits
'''
重要参数:
return_X_y: 若为True,则以 (data, target) 形式 返回数据;默认为False,表示以字典形式返回数据的全部信息(包括 data 和 target)
n_class: 表示返回数据的类别数,如:n_class = 5, 则返回0~4的数据样本
'''
#代码
from sklearn.datasets import load_digits
digits = load_digits()
print(digits.data.shape)
print(digits.target.shape)
print(digits.images.shape)
import matplotlib.pyplot as plt
plt.matshow(digits.image[0])
plot.show()
构造数据集
sklearn.datasets.make_regression等
二、常用算法
类型 | 应用 | 算法 |
---|---|---|
分类 | 异常检测、图像识别等 | KNN、SVM等 |
回归 | 价格预测、趋势预测等 | 线性回归、SVR等 |
聚类 | 图像分割、群体划分等 | KMeans、谱聚类等 |
降维 | 可视化 | PCA、NMF等 |
2.1 分类模型
模型 | 调用方式 |
---|---|
最近邻算法 | neighbors.NearestNeighbors |
最近邻算法 | neighbors.KNeighborsClassifier (RadiusNeighborsClassifier) |
KDTree | neighbors.KDTree |
支持向量机 | svm.SVC (LinearSVC) |
朴素贝叶斯 | naive_bayes.GaussianNB |
决策树 | tree.DecisionTreeClassifier |
集成方法 | ensemble.BaggingClassifier |
神经网络 | neural_network.MLPClassifier |
2.2 回归模型
模型 | 调用方式 |
---|---|
线性回归 | linear_model.LinearRegression |
岭回归(L2正则化) | linear_model.Ridge (RidgeCV) |
Lasso回归(L1正则化) | linear_model.Lasso (LassoCV) |
弹性网络(介于L1和L2之间) | linear_model.ElasticNet (ElasticNetCV) |
最近邻回归 | neighbors.KNeighborsRegressor (RadiusNeighborsRegressor) |
回归树 | tree.DecisionTreeRegressor |
支持向量机回归 | svm.SVR (LinearSVR) |
最小角回归 | linear_model.Lars |
贝叶斯回归 | linear_model.BayesianRidge |
逻辑回归 | linear_model.LogisticRegression |
多项式回归 | preprocessing.PolynomialFeatures |
linear_model.LinearRegression lr查看模型结果
- 各变量权重: lr.coef_
- 截距项: lr.intercept_
- R^2值: lr.score(X_train, y_train)
2.3 聚类模型
- sklearn.cluster
模型 | 调用方式 |
---|---|
K-Means | cluster.KMeans |
K-Means小批量聚类 | cluster.MiniBatchKMeans |
AP聚类 | cluster.AffinityPropagation |
均值漂移 | cluster.Meanshift |
层次聚类 | cluster.AgglomerativeClustering |
DBSCAN | cluster.DBSCAN |
BIRCH | cluster.Birch |
谱聚类 | cluster.SpectralClustering |
- 不同聚类模型用到的相似度度量方法
算法名称 | 参数 | 可扩展性 | 相似性度量 |
---|---|---|---|
K-Means | 聚类个数 | 大规模数据 | 点间距离 |
DBSCAN | 邻域大小 | 大规模数据 | 点间距离 |
Gaussian Mixtures | 聚类个数和其他超参 | 复杂度高,不适合处理大规模数据 | 马氏距离 |
Birch | 分支因子、阈值等其他超参 | 大规模数据 | 两点间的欧氏距离 |
2.4 降维模型
- sklearn.decomposition
模型 | 调用方式 |
---|---|
主成分分析 | decomposition.PCA |
截断SVD和LSA | decomposition.TruncatedSVD |
字典学习 | decomposition.SparseCoder |
因子分析 | decomposition.FactorAnalysis |
独立成分分析 | decomposition.FastICA |
非负矩阵分解 | decomposition.NMF |
LDA | decomposition.LatentDirichletAllocation |
- 不同降维算法 的适用场景
算法名称 | 参数 | 可扩展性 | 相似性度量 |
---|---|---|---|
PCA | 所降维度及其他超参 | 大规模数据 | 信号处理等 |
FastICA | 所降维度及其他超参 | 超大规模数据 | 图形图像特征提取 |
NMF | 所降维度及其他超参 | 大规模数据 | 图形图像特征提取 |
LDA | 所降维度及其他超参 | 大规模数据 | 文本数据、主题挖掘 |
2.5 集成算法
- sklearn.ensemble
模块 | 算法 |
---|---|
bagging | bagging, BaggingClassifier, BaggingRegressor |
RandomForest | RandomForestClassifier, RandomForestRegressor |
RandomTreesEmbedding | |
AdaBoost | AdaBoostClassifier, AdaBoostRegressor |
gradient_boosting | gradient_boosting, ExtraTreesClassifier, ExtraTreesRegressor |
sklearn模型接口
- 监督模型提供的接口有:
model.predict(X_new) 预测新样本
model.predict_proba(X_new) 预测概率,仅对某些模型有用,比如LogisticRegression
model.score 得分越高,fit越好
- 非监督模型提供的接口有:
model.transform() 从数据中学到新的”基空间“
model.fit_transform() 从数据中学到新的基 并将这个数据按照这组”基“进行转换
三、数据预处理
- sklearn.preprocessing 模块
Imputer
Binarizer
数值特征处理
MinMaxScaler
StandardScaler
PolynomialFeatures 多项式特征
类别特征处理
LabelEncoder
MultiLabelBinarizer
OnehotEncoder
四、特征选择
- sklearn.feature_selection
SelectFromModel等
五、模型处理和验证等
- sklearn.model_selection
train_test_split
cross_val_score
KFold
LeaveOneOut 留一验证
LeavePOut 留P验证
ShuffleSplit分层分割
- StratifiedKFold
- StratifiedShuffleSplit
分组分割
- LeaveOneGroupOut
- LeavePGroupsOut
- GroupShuffleSplit
- GroupKFold
六、模型评估
参考这篇文章