python_Sklearn基础
Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。当我们面临机器学习问题时,便可根据下图来选择相应的方法。Sklearn具有以下特点:
- 简单高效的数据挖掘和数据分析工具
- 让每个人能够在复杂环境中重复使用
- 建立NumPy、Scipy、MatPlotLib之上
Sklearn安装
pip install -U scikit-learn
获取数据
- sklearn数据集
- 创建数据集
sklearn数据集
from sklearn import datasets
iris = datasets.load_iris() # 导入数据集
X = iris.data # 获得其特征向量
y = iris.target # 获得样本label
创建数据集
from sklearn.datasets.samples_generator import make_classification
X, y = make_classification(n_samples=6, n_features=5, n_informative=2, n_redundant=2, n_classes=2,
n_clusters_per_class=2,scale=1.0, random_state=20)
# n_samples: 指定样本数
# n_features:指定特征数
# n_classes: 指定几分类
# random_state:随机种子,使得随机状可重
print(X)
print(y)
[[-0.6600737 -0.0558978 0.82286793 1.1003977 -0.93493796]
[ 0.4113583 0.06249216 -0.90760075 -1.41296696 2.059838 ]
[ 1.52452016 -0.01867812 0.20900899 1.34422289 -1.61299022]
[-1.25725859 0.02347952 -0.28764782 -1.32091378 -0.88549315]
[-3.28323172 0.03899168 -0.43251277 -2.86249859 -1.10457948]
[ 1.68841011 0.06754955 -1.02805579 -0.83132182 0.93286635]]
[0 1 1 0 0 1]
for x_,y_ in zip(X,y):
print(y_,end=': ')
print(x_)
0: [-0.6600737 -0.0558978 0.82286793 1.1003977 -0.93493796]
1: [ 0.4113583 0.06249216 -0.90760075 -1.41296696 2.059838 ]
1: [ 1.52452016 -0.01867812 0.20900899 1.34422289 -1.61299022]
0: [-1.25725859 0.02347952 -0.28764782 -1.32091378 -0.88549315]
0: [-3.28323172 0.03899168 -0.43251277 -2.86249859 -1.10457948]
1: [ 1.68841011 0.06754955 -1.02805579 -0.83132182 0.93286635]
数据预处理
- 数据归一化
- 正则化(normalize)
- one-hot编码
from sklearn import preprocessing
数据归一化
data = [[0, 0], [0, 0], [1, 1], [1, 1]]
# 1. 基于mean和std的标准化
scaler = preprocessing.StandardScaler().fit(train_data)
scaler.transform(train_data)
scaler.transform(test_data)
# 2. 将每个特征值归一化到一个固定范围
scaler = preprocessing.MinMaxScaler(feature_range=(0, 1)).fit(train_data)
scaler.transform(train_data)
scaler.transform(test_data)
#feature_range: 定义归一化范围,注用()括起来
正则化(normalize)
X = [[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]]
X_normalized = preprocessing.normalize(X, norm='l2')
X_normalized
array([[ 0.40824829, -0.40824829, 0.81649658],
[ 1. , 0. , 0. ],
[ 0. , 0.70710678, -0.70710678]])
one-hot编码
data = [[0, 0, 3], [1, 1, 0], [0, 2, 1], [1