scikit-learn 使用汇总

「记录在 udacity 深度学习课程中提到过的以及日常使用到的一些 scikit-learn 的使用」

  • 安装
pip install scikit-learn
  • 处理遗失的数据
from sklearn.preprocessing import Imputer

imputer = Imputer(missing_values="NaN", strategy="mean", axis=0)
imputer = imputer.fit(X[:, 1:3])
X[: , 1:3] = imputer.transform(X[:,1:3])
print(X)
  • 编码类别数据
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])
print(X)
# 创建虚拟变量
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()

labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
  • 切分训练集和测试集(验证集)- 方法 1
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
  • 切分训练集和测试集(验证集)- 方法 2
from sklearn.model_selection.StratifiedShuffleSplit

StratifiedShuffleSplit(n_splits=10, test_size=’default’, 
                          \train_size=None, random_state=None)

example:

## 此处实际划分为训练集,验证集和测试集
from sklearn.model_selection import StratifiedShuffleSplit

ss = StratifiedShuffleSplit(n_splits=1, test_size=0.2)
# 生成训练集和验证集
train_idx, val_idx = next(ss.split(codes, labels_vecs))
# 在验证集中取一半作为测试集
half_val_len = int(len(val_idx)/2)
val_idx, test_idx = val_idx[:half_val_len], val_idx[half_val_len:]
# 训练集,验证集和测试集
train_x, train_y = codes[train_idx], labels_vecs[train_idx]
val_x, val_y = codes[val_idx], labels_vecs[val_idx]
test_x, test_y = codes[test_idx], labels_vecs[test_idx]
  • 特征缩放

大部分的机器学习模型会使用欧氏距离来计算两个数据点之间的距离,但是其特征的大小,单位和范围会变化很大。大特征将会在距离计算中获得比小特征更多的权重。可以用特征标准化或者 Z-score 标准化的方法来解决。为此我们可以导入 sklearn.preprocessing 中的 StandardScalar 类。

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

你可能感兴趣的:(scikit-learn 使用汇总)