机器学习(3)——机器学习组成与sklearn数据集操作

一、机器学习组成

机器学习主要是由三部分组成,即:表示(模型)、评价(策略)和优化(算法)。

表示(或者称为:模型):Representation
模型本质上是一个函数,实现样本x到样本标记y的映射,即f(x)->y,表示主要做的就是建模,故可以称为模型。模型要完成的主要工作是转换:将实际问题转化成为计算机可以理解的问题,即建模。

评价(或者称为:策略):Evalution
评价的目标是判断已建好的模型的优劣。这里就会是一些评价的指标以及一些评价函数的设计。

优化:Optimization
优化的目标是评价的函数,我们希望能够找到最好的模型,也就是说评价最高的模型。

二、scikit-learn数据集操作

sklearn数据集接口介绍

sklearn.datasets 加载获取流行数据集
(1)datasets.load_*(return_X_y=False) 获取小规模数据集,数据包含在datasets里,return_X_y: 如果为True,则返回元组(tuple),默认为False
(2)datasets.fetch_*(data_home=None,subset=‘train’) 获取大规模数据集,需要从网络上下载,data_home:数据集下载目录,默认是 ~/scikit_learn_data/ ,要修改默认目录,可以修改环境变量SCIKIT_LEARN_DATA ,subset默认为train(训练集),其它值:test(测试),all(全部)
(3)datasets.make_*() 本地生成数据集
(4)datasets.get_data_home() 获取数据集目录
(5)clear_data_home(data_home=None) 删除所有下载数据

load*和 fetch* 函数返回的数据类型是 datasets.base.Bunch,本质上是一个 字典。主要包含以下属性:

data:特征数据数组,是 n_samples * n_features 的二维 numpy.ndarray 数组
target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
DESCR:数据描述
feature_names:特征名
target_names:标签名

示例:

datasets.load_*(return_X_y=False)

#导入鸢尾花数据集
from sklearn.datasets import load_iris

lr = load_iris()
print(lr.data) #特征值
print(lr.target) #目标值
print(lr.DESCR) #数据描述
print(lr.feature_names) #特征名
print(lr.target_names) #标签名

输出:略

datasets.fetch_*(data_home=None)

from sklearn.datasets import fetch_20newsgroups

news = fetch_20newsgroups(subset='all')
print(news.target)

输出:略
补充
使用fetch_20newsgroups会自动下载20news-bydate_py3(数据集),但速度很慢,可以手动下载20news-bydate_py3(地址:https://pan.baidu.com/s/1Do3vncy3AY15EhENP6nR4A 提取码:ecwi ),Linux系统置于~/scikit_learn_data/ 下(无则创建),Windows系统请看:https://segmentfault.com/a/1190000016498146

datasets.make_*()
生成本地分类数据:

from sklearn.datasets.samples_generator import make_classification
"""
n_samples:样本总数
n_features:特征总数
random_state:int,random_state是随机数生成器使用的种子; RandomState的实例,random_state是随机数生成器; None,随机数生成器所使用的RandomState实例np.random
return :X,特征数据集;y,目标值
"""

X,y = make_classification(n_samples=10,n_features=5)
print(X)
print(y)
[[-0.86454514 -1.36268468  0.90295025 -0.30836021  0.29052901]
 [-1.87806188  1.25455456 -1.6531036  -0.41116952 -2.45396463]
 [-1.40417143 -0.93543289  0.00718474 -0.42240351 -0.46345276]
 [-0.19693165  2.1764521   0.76339485  0.08239387 -1.75413969]
 [-0.88154855  1.31744959 -0.09864734 -0.1482829  -1.68516987]
 [ 1.35352212  0.47337301  0.46974938  0.38087852  0.76025467]
 [ 0.80810895  0.8111545  -0.73747885  0.25983966  0.06703121]
 [ 1.26830884 -1.43252407 -0.79440397  0.24175167  2.08564918]
 [-0.42608793 -1.59002686  1.01691516 -0.20834432  0.81545735]
 [-2.02371648 -0.44202249  1.43556549 -0.55315974 -1.33120935]]
[0 1 0 1 1 1 1 0 0 0]

生成本地回归数据:

#生成本地回归数据:
from sklearn.datasets.samples_generator import make_regression

X,y = make_regression(n_samples=10,n_features=5)
print(X)
print(y)
[[ 1.00083671e+00  5.63928397e-01 -1.10912015e+00  1.19800471e+00
  -8.42378340e-01]
 [-4.09079613e-02  1.33005245e+00 -7.53300418e-02  9.69744810e-02
  -2.03115358e+00]
 [-2.30320257e-01 -5.41023431e-01 -3.34915677e-01 -8.13300999e-01
   5.19756172e-01]
 [ 9.49846145e-01 -5.23253531e-01  1.26802032e+00 -4.42250036e-01
  -3.85213090e-01]
 [-4.62611277e-01  7.78740446e-01  1.28919813e+00 -2.12661369e-01
  -1.55375302e+00]
 [ 1.26642863e+00  1.66596003e+00 -7.52345528e-01 -7.55070025e-01
   2.29231594e-01]
 [-3.05838328e-02  2.54112184e-01 -4.86162867e-01 -5.16731106e-01
  -6.79390340e-01]
 [ 9.80560544e-02 -1.66537453e+00 -6.29638652e-01  6.86211850e-01
   1.61388330e+00]
 [-1.69731818e-01 -4.12799300e-01 -9.47467288e-05  1.35926163e+00
  -1.23264374e-01]
 [ 1.17891988e+00  4.49857029e-01  1.48206272e+00  1.57026387e+00
  -3.10388803e-02]]
[157.51609376  34.41708374 -98.65693718  34.50306617 -25.6337089
 212.38658293 -44.63921213 -41.87331386  19.89257885 264.34091796]

补充:
以上三个接口的例子只各举其一,其参数和其它例子请自行参考官方文档

猜你喜欢

转载自blog.csdn.net/qq_35526165/article/details/103392163