sklearn数据库-【老鱼学sklearn】

在做机器学习时需要有数据进行训练,幸好sklearn提供了很多已经标注好的数据集供我们进行训练。

本节就来看看sklearn提供了哪些可供训练的数据集。

这些数据位于datasets中,网址为:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets

房价数据

加载波士顿房价数据,可以用于线性回归用:

sklearn.datasets.load_boston:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html#sklearn.datasets.load_boston

加载方式为:

from sklearn.datasets import load_boston
boston = load_boston()
print(boston.data.shape)

这个数据集的shape为:

(506, 13)

也就是506行,13列,这里13列就是影响房价的13个属性,具体是哪些属性可以通过如下代码打印出来:

print(boston.feature_names)

输出为:

[‘CRIM‘ ‘ZN‘ ‘INDUS‘ ‘CHAS‘ ‘NOX‘ ‘RM‘ ‘AGE‘ ‘DIS‘ ‘RAD‘ ‘TAX‘ ‘PTRATIO‘
 ‘B‘ ‘LSTAT‘]

具体代表啥意思,要么自己猜,要么上网查吧,我不一一去解释了,我猜几个:RM:room数,也就是户型中的几房,AGE:age(房龄),不知道猜对不对,大家自己去实践了。

你说我咋知道这个数据集中有feature_names属性,我也不知道,我只是把上面的boston整个打印出来看到其中有这个属性的。

预测房价案例

from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 加载房价数据
boston = load_boston()
data_X = boston.data
data_y = boston.target

# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data_X, data_y, test_size=0.3)

# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 打印出预测的前5条房价数据
print("预测的前5条房价数据:")
print(model.predict(X_test)[:5])

# 打印出测试集中实际房价前5条数据
print("测试集中实际房价前5条数据:")
print(y_test[:5])

输出:

预测的前5条房价数据:
[ 17.44807408  27.78251433  18.8344117   17.85437188  34.47632703]
测试集中实际房价前5条数据:
[ 14.3  22.3  22.6  20.6  34.9]

以这个结果集中第一条数据为例,我们预测出某房子的价格是17.4万,而实际价格是14.3万。

不过说实话,上面的房价数据只能用于测试算法,我们真要预测房价的话,原始数据的获得没有那么全和规整,因此,在机器学习中,收集数据并清洗也是一个很重要的工作,脏活累活也必须得干,光有算法没啥用。

花的数据前面一个博文已经讲过了,这里就不再重复了。

手写数字识别数据

还有手写数字识别的,这个也很常用:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits

创建样本数据

也可以生成一些虚拟的数据,这些是位于官网的API文档中Samples generator一节:

案例源代码为:

from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# 创建100个样本,1个属性值的数据,输出一个目标值,同时也设置了噪音
X, y = make_regression(n_samples=100, n_features=1, n_targets=1, noise=10)
print(X.shape)
print(y.shape)

# 对X,y画散点图,看看长啥模样的
plt.scatter(X, y)
plt.show()

输出的数据为:

(100, 1)
(100,)

也就是X值中有100行1列,y值是100行的值。

输出的图形为:

看起来接近一条直线。

时间: 2024-07-31 10:17:46

sklearn数据库-【老鱼学sklearn】的相关文章

sklearn交叉验证-【老鱼学sklearn】

交叉验证(Cross validation),有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法.于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证. 一开始的子集被称为训练集.而其它的子集则被称为验证集或测试集.交叉验证是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize). 我们以分类花的例子来看下: # 加载iris数据集 from sklearn.datasets import load_iris from s

sklearn交叉验证2-【老鱼学sklearn】

过拟合 过拟合相当于一个人只会读书,却不知如何利用知识进行变通. 相当于他把考试题目背得滚瓜烂熟,但一旦环境稍微有些变化,就死得很惨. 从图形上看,类似下图的最右图: 从数学公式上来看,这个曲线应该是阶数太高的函数,因为一般任意的曲线都能由高阶函数来拟合,它拟合得太好了,因此丧失了泛化的能力. 用Learning curve 检视过拟合 首先加载digits数据集,其包含的是手写体的数字,从0到9: # 加载数据 digits = load_digits() X = digits.data y

为何学习matplotlib-【老鱼学matplotlib】

这次老鱼开始学习matplotlib了. 在上个pandas最后一篇博文中,我们已经看到了用matplotlib进行绘图的功能,这次更加系统性地多学习一下关于matplotlib的功能. 在matlab中,其拥有非常强大的显示图表的功能. 在python中,就提供了一个类似matlab软件中的画图库matplotlib,其基本上是模仿matlab中的画图函数. 官网中介绍的显示图表的例子见:http://matplotlib.org/gallery/index.html 要使用,就必须先进行安装

tensorflow用dropout解决over fitting-【老鱼学tensorflow】

在机器学习中可能会存在过拟合的问题,表现为在训练集上表现很好,但在测试集中表现不如训练集中的那么好. 图中黑色曲线是正常模型,绿色曲线就是overfitting模型.尽管绿色曲线很精确的区分了所有的训练数据,但是并没有描述数据的整体特征,对新测试数据的适应性较差. 一般用于解决过拟合的方法有增加权重的惩罚机制,比如L2正规化,但在本处我们使用tensorflow提供的dropout方法,在训练的时候, 我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得"不完整". 用一个不完整

pandas基本介绍-【老鱼学pandas】

前面我们学习了numpy,现在我们来学习一下pandas. Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头.数据序列号以及实际的数据,而numpy就仅仅包含了实际的数据. 安装 直接输入: pip3 install pandas 最基本用法 import pandas as pd s = pd.Series([1, 2, 5, 6]) print(s) 输出: 0 1 1 2 2 5 3 6 dtype: int6

pandas设置值-【老鱼学pandas】

本节主要讲述如何根据上篇博客中选择出相应的数据之后,对其中的数据进行修改. 对某个值进行修改 例如,我们想对数据集中第2行第2列的数据进行修改: import pandas as pd import numpy as np dates = pd.date_range("2017-01-08", periods=6) data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A",

pandas处理丢失数据-【老鱼学pandas】

假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd.date_range("2017-01-08", periods=6) data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C&

matplotlib坐标轴设置-【老鱼学matplotlib】

我们可以对坐标轴进行设置,设置坐标轴的范围,设置坐标轴上的文字描述等. 基本用法 例如: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 生成x轴上的数据:从-3到3,总共有50个点 x = np.linspace(-1, 1, 50) # 定义一个线性方程 y1 = 2 * x + 1 # 定义一个二次方程 y2 = x ** 2 # 设置x轴的取值范围为:-1到2 plt.xlim(-1, 2)

matplotlib柱状图-【老鱼学matplotlib】

柱状图在平常的图表中是非常常用的图,本节我们来看下如何来显示柱状图. 代码为: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 柱子的数量 n = 12 # 生成X轴上的坐标位置 X = np.arange(n) # 生成Y轴上的值 Y = np.random.rand(n) plt.bar(X, Y) # 生成柱状图上的标注值 for x,y in zip(X, Y): # 在(x, y+0.01