IPython
IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。IPython 是基于BSD 开源的。 IPython 为交互式计算提供了一个丰富的架构,包含:
- 强大的交互式shell
- 供Jupyter notebooks使用的Jupyter内核
- 交互式的数据可视化工具
- 灵活、可嵌入的解释器
- 易于使用,高性能的并行计算工具
%matplotlib inline
用在Jupyter notebook中具体作用是当你调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。
sklearn模型算法选择路径图
数据集划分方法
- 留出法
直接将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集 S,另一个作为测试集 T。在划分的时候要尽可能保证数据分布的一致性,即避免因数据划分过程引入额外的偏差而对最终结果产生影响。为了保证数据分布的一致性,通常我们采用 分层采样 的方式来对数据进行采样。
- k 折交叉验证
将数据集 D 分为 k 份,其中的 k-1 份作为训练集,剩余的那一份作为测试集,这样就可以获得 k 组训练/测试集,可以进行 k 次训练与测试,最终返回的是 k 个测试结果的均值。划分依然是依据 分层采样 的方式来进行。对于交叉验证法,其 k 值的选取往往决定了评估结果的稳定性和保真性,通常 k 值选取 10 。
-
自助法
每次从数据集D中取一个样本作为训练集中的元素,然后把该样本放回,重复该行为 m 次,这样我们就可以得到大小为m的训练集,在这里面有的样本重复出现,有的样本则没有出现过,我们把那些没有出现过的样本作为测试集。
切割数据集
sklearn.model_selection.
train_test_split
(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
将数组或矩阵拆分为随机训练和测试子集
*arrays:长度或者shape[0]相同的可索引序列 | 允许的输入是列表、numpy数组、scipy-sparse矩阵、或者是pandas dataframe |
test_size:float, int或None(默认) | 如果是浮点数,则应该在0.0和1.0之间,表示要测试集占总数据集的比例。 如果是int类型,表示测试集的绝对数量。 如果是None,则将该值设置为训练集train_size大小的补数;如果train_size也是None,则将其设置为0.25。 |
train_size:float, int, or None(默认=None) | 如果是浮点数,则应该在0.0和1.0之间,表示要训练集占数据集的比例。 如果是int类型,表示训练集的绝对数量。 如果是Nnone,该值将自动设置为测试集大小的补数。 |
random_state:int,RandomState实例或None(默认) | 如果是int类型,random_state是随机数生成器使用的种子; 如果是RandomState实例,random_state是随机数生成器; 如果是None,随机数生成器就是np.random使用的RandomState实例,每次生成结果均不同。 |
shuffle:可选参数,boolean(默认为True) | 表示是否在分割之前重新洗牌数据。只有在stratify=None时,才允许shuffle=False。 |
stratify:array-like 或者 None (default=None) | 如果不是None,则以分层的方式分割数据,并将其作为类标签。 |
逻辑回归模型
class sklearn.linear_model.
LogisticRegression
(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)
fit
( X , y , sample_weight = None ):根据给定的训练数据拟合模型score
( X , y , sample_weight = None ):返回给定测试数据和标签的平均准确度from sklearn.linear_model import LogisticRegression lr = LogisticRegression() lr.fit(X_train, y_train) print("Training set score: {:.2f}".format(lr2.score(X_train, y_train))) print("Testing set score: {:.2f}".format(lr2.score(X_test, y_test)))
随机森林分类模型
class sklearn.ensemble.
RandomForestClassifier
(n_estimators=100, *, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None, ccp_alpha=0.0, max_samples=None)
n_estimators | 森林里(决策)树的数目 |
criterion | 衡量分裂质量的性能(函数)。 受支持的标准是基尼不纯度的"gini",和信息增益的"entropy"(熵) |
max_depth:整数或者无值,可选的(默认为None) | 决策)树的最大深度。如果值为None,那么会扩展节点,直到所有的叶子是纯净的,或者直到所有叶子包含少于min_sample_split的样本 |
min_samples_split:整数,浮点数,可选的(默认值为2) | 分割内部节点所需要的最小样本数量 |
min_samples_leaf | 需要在叶子结点上的最小样本数量 |
fit
( X , y , sample_weight = None )predict
( X ):预测X的类别score
( X , y , sample_weight = None )predict_proba
(X):预测X的类别概率
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
pred = lr.predict(X_train)
pred[:10]
pred_proba = lr.predict_proba(X_train)
pred_proba[:10]