天天看点

Python机器学习手册从数据预处理到深度学习(二)

继续学习这本书,这一章主要是主要是如何加载scikit-learn库中的自带的一些数据集,以及如何创建仿真数据集,其他的几个部分是加载CSV文件,Excel文件,加载json文件,查询SQL数据库,这几个部分的我也不会用到的,所以后面就暂时不写了。

#这一章主要是学习如何加载数据的,尽管在Python生态体系中有很多加载数据的方法,但本书会着重使用pandas库的
#一些方法来加载外部数据,并使用scikit-learn(Python中的一个开源的机器学习库)来生成仿生数据
#2.1加载样本数据集
#问题描述:加载已有的样本数据集
#加载scikit-learn的shujuj
from sklearn import datasets

#加载手写数字数据集
digits = datasets.load_digits()

#创建特征矩阵
features = digits.data

#创建目标向量
target = digits.target

#查看第一个样本数据
features[0] #不会显示出来
print(features[0]) #显示出来
#结果
# [ 0.  0.  5. 13.  9.  1.  0.  0.  0.  0. 13. 15. 10. 15.  5.  0.  0.  3.
#  15.  2.  0. 11.  8.  0.  0.  4. 12.  0.  0.  8.  8.  0.  0.  5.  8.  0.
#   0.  9.  8.  0.  0.  4. 11.  0.  1. 12.  7.  0.  0.  2. 14.  5. 10. 12.
#   0.  0.  0.  0.  6. 13. 10.  0.  0.  0.]

#讨论
# 在研究机器学习算法或方法时,大部分人不愿意把时间花在加载、转换、清洗从现实生活中得到的数据集上
# ,幸运的是,scikit-learn预置了一些很容易加载的常见数据集,这些数据集被称为“玩具”(toy)数据集,因为它们
# 比现实中的数据集要小得多,干净得多,scikit-learn中流行的玩具数据集有:
#
# load_boston
# 503个波士顿房价的观测值,这是一个用于研究回归算法的优质数据集
#
# load_iris
# 包含150个鸢尾花尺寸的观测值,这是一个用于研究分类算法的优质数据集
#
# load_digits
# 包含1797个手写数字图片的观测值,这是一个用于研究图像分类算法的优质数据集
#################################################################################
#2.2创建仿真数据集
#问题描述:生成一个仿真数据集
#加载库
from sklearn.datasets import make_regression

# 生成特征矩阵 目标向量以及模型系数
features,target,coefficients = make_regression(n_samples= 100,
                                               n_features= 3,
                                               n_informative=3,
                                               n_targets=1,
                                               noise= 0.0,
                                               coef= True,
                                               random_state=1)
#查看特征矩阵和目标向量
print('Feature Matrix\n',features[:3])
print('Target Vector\n',target[:3])
#结果
# Feature Matrix
#  [[ 1.29322588 -0.61736206 -0.11044703]
#  [-2.793085    0.36633201  1.93752881]
#  [ 0.80186103 -0.18656977  0.0465673 ]]
# Target Vector
#  [-10.37865986  25.5124503   19.67705609]

#如果需要创建一个仿真数据集来做分类,可以使用make_classification
#加载库
from sklearn.datasets import make_classification

#生成特征矩阵和目标向量
features,target =make_classification(n_samples= 100,
                                     n_features= 3,
                                     n_informative= 3,
                                     n_redundant=0,
                                     n_classes=2,
                                     weights=[.25,.75],
                                     random_state=1)
# 查看特征矩阵和目标向量
print('Feature Matrix\n',features[:3])
print('Target Vector\n',target[:3])
#结果
# Feature Matrix
#  [[ 1.06354768 -1.42632219  1.02163151]
#  [ 0.23156977  1.49535261  0.33251578]
#  [ 0.15972951  0.83533515 -0.40869554]]
# Target Vector
#  [1 0 0]

#最后如果你想要一个适合做聚类处理的数据集,scikit-learn 提供了make_blobs
#加载库
from sklearn.datasets import make_blobs

#生成特征矩阵和目标向量
features, target = make_blobs(n_samples= 100,
                              n_features=2,
                              centers= 3,cluster_std=0.5,
                              shuffle=True,
                              random_state=1)
# 查看特征矩阵和目标向量
print('Feature Matrix\n',features[:3])
print('Target Vector\n',target[:3])
#结果
# Feature Matrix
#  [[ -1.22685609   3.25572052]
#  [ -9.57463218  -4.38310652]
#  [-10.71976941  -4.20558148]]
# Target Vector
#  [0 1 1]

#对于make_blobs来说,centers参数决定了要生成多少个聚类,使用matplotlib可视化库,能将
#make_blobs生成的聚类可视化地显示出来,如下图所示。
#加载库
import matplotlib .pyplot as plt

#查看散点图
plt.scatter(features[:,0],features[:,1],c=target)
plt.show()
########################################################################
#2.3加载CSV文件
#问题描述:加载以逗号为分隔符(Comma-Separated Values,CSV)的文件

#加载库
import pandas as pd

#创建URL
# /url= 'https://tinyurl.com/simulated_data' #书里这个网址打不开,网上找了一个能打开的
url= 'https://github.com/nfmcclure/tensorflow_cookbook/raw/master/01_Introduction/07_Working_with_Data_Sources/birthweight_data/birthweight.dat'

#加载数据集
dataframe =pd.read_csv(url)

#查看前两行数据
dataframe.head(2)
print(dataframe.head(2))

#结果:
#   LOW\tAGE\tLWT\tRACE\tSMOKE\tPTL\tHT\tUI\tBWT
# 0               1\t28\t113\t1\t1\t1\t0\t1\t709
# 1              1\t29\t130\t0\t0\t0\t0\t1\t1021
####################################################################
#2.4加载excel文件 这个部分程序没跑通,暂时记录一下
#问题描述:加载一个excel数据表
#加载库
import pandas as pd

#创建一个url
url='https://tinyurl.com/simulated_excel' #这个依然打不开

#加载数据
dataframe = pd.read_excel(url,sheetname= 0,header=1)

#查看前两行
dataframe.head(2)
####################################################################
#2.5加载 JSON文件——暂时用不到就不记录了
# 百度了一下 javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,
# 通过这两种结构可以表示各种复杂的结构
#2.6加载SQL——暂时用不到就不记录了