import pandas as pd
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
feature = iris.feature_names
data = pd.DataFrame(X,columns=feature)
各个特征的相关解释:
'''
penalty {‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’正则化方式
dual bool, default=False 是否使用对偶形式,当n_samples> n_features时,默认dual = False。
C float, default=1.0
solver {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs’
l1_ratio float, default=None
'''
from sklearn.linear_model import LogisticRegression
log_iris = LogisticRegression()
log_iris.fit(X,y)
log_iris.score(X,y)
D:\Ljc\Aacon\Anaconda3\lib\site-packages\sklearn\linear_model\_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(
0.9733333333333334
'''
参数:
solver:{'svd', 'lsqr', 'eigen'},默认='svd'
solver 的使用,可能的值:
'svd' : 奇异值分解(默认) 不计算协方差矩阵,因此建议将此求解器用于具有大量特征的数据
'lsqr' : 最小二乘法,可以与收缩结合使用
'eigen': 特征值分解,可以与收缩结合使用
'''
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda_iris = LinearDiscriminantAnalysis()
lda_iris.fit(X,y)
lda_iris.score(X,y)
0.98
# 朴素贝叶斯
from sklearn.naive_bayes import GaussianNB
NB_iris = GaussianNB()
NB_iris.fit(X,y)
NB_iris.score(X,y)
0.96
决策树的三要素是:
1 特征节点的选择
有3种选择方式,sklearn默认的是基尼指数
- ID3 信息增益
- C4.5 信息增益率
- Geni 基尼系数
2 是决策树的生成
3 是剪枝,有预剪枝和后剪枝
'''
criterion:{“gini”, “entropy”}, default=”gini”
max_depth:树的最大深度。
min_samples_split:拆分内部节点所需的最少样本数
min_samples_leaf :在叶节点处需要的最小样本数。
'''
from sklearn.tree import DecisionTreeClassifier
tree_iris = DecisionTreeClassifier(min_samples_leaf=5)
tree_iris.fit(X,y)
tree_iris.score(X,y)
0.9733333333333334
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
'''
C:正则化参数 正则化的强度与C成反比, 必须严格为正 , 惩罚是平房的12蹭饭
kernel:{'linear','poly','rbf','sigmoid','precomputed'}, 默认='rbf'
degree : 多项式和阶数
gamma : "rbf","poly" 和"Sigmiod"的内核系数
shrinking:是否软间隔分类, 默认true
'''
svc_iris = make_pipeline(StandardScaler(),SVC(gamma = 'auto'))
svc_iris.fit(X,y)
svc_iris.score(X,y)
0.9733333333333334
参考链接
参考 : GitHub开源集成学习(上) Datawhale