数据挖掘——Python加载数据实操
来源:数据挖掘实验;实验环境:jupyter
主要内容:基于python中klearn的自带小数据读取,以及生成自定义分类数据并实现数据可视化。
第一部分:读取四个klearn中自带的的数据集,并进行查看以及简单拟合模型。
第二部分:生成自定义分类数据并实现数据可视化。
备注:
Scikit-learn(sklearn)是机器学习中常用的第三方模块,围绕机器学习提供了很多课直接调用的机器学习算法以及经典的数据集,对常用的机器学习方法进行了封装,是一种简单高效的数据挖掘和数据分析工具。更多关于sklearn见:(8条消息) Python之Sklearn使用教程_谓之小一-CSDN博客
今天才知道python有很多自带的数据集,详细解释如下:(8条消息) 盘点 | Python自带的那些数据集_机器学习算法那些事-CSDN博客
操作步骤:
任务一 Boston房价数据
1、导入并查看Boston房价数据集(503,16)
from sklearn.datasets import load_boston
from sklearn import linear_model
#加载波士顿房价数据集
boston = load_boston()
boston
#查看数据集类型
type(boston)#输出sklearn.utils.Bunch
sklearn.utils.Bunch是什么类型?
Bunch本质上的数据类型是dict,属性有:
-
DESCR:数据描述。
-
target_names:标签名。可自定义,默认为文件夹名。
-
filenames:文件名。
-
target:文件分类。如猫狗两类的话,与filenames一一对应为0或1。
-
data:数据数组。
(如目录结构为的dataset)
波士顿房价数据集的简介、下载和使用方法见:
(8条消息) Dataset之Boston:Boston波士顿房价数据集的简介、下载、使用方法之详细攻略_一个处女座的程序猿-CSDN博客_boston数据集
2、划分数据集并训练
划分自变量和因变量,对数据集拟合多元线性回归,输出模型系数。
#将自变量数据以及因变量数据进行划分
data = boston.data
target = boston.target
#查看各自结构
print(data.shape)#out:(506, 13)
print(target.shape)#out:(506,)
#将数据集用线性回归模型进行拟合
print('系数矩阵:',linear_model.LinearRegression().fit(data,target).coef_)
'''out:系数矩阵: [-1.08011358e-01 4.64204584e-02 2.05586264e-02 2.68673382e+00
-1.77666112e+01 3.80986521e+00 6.92224640e-04 -1.47556685e+00
3.06049479e-01 -1.23345939e-02 -9.52747232e-01 9.31168327e-03
-5.24758378e-01]'''
3、
#两种不同方式的自变量数据集读取命名
dic_data = boston['data']
dic_data = boston.get('data')
dic_data#查看数据
#查看因变量(房价)数据
dic_target = boston['target']
dic_target
任务二 iris花卉数据
Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
from sklearn.datasets import load_iris#导入iris数据集
from sklearn import svm#导入SVM模型
iris = load_iris()#读取数据
data=iris.data
target = iris.target
print(data.shape)
print(target.shape)
model=svm.SVC().fit(data,target)
print('svm模型:',model)#输出模型结果并预测准确率
print('score',model.score(data,target))
输出:
(150, 4)
(150,)
svm模型: SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='auto_deprecated',
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)
score 0.9866666666666667
任务三 糖尿病数据集
#糖尿病数据集
from sklearn.datasets import load_diabetes
from sklearn import linear_model#导入数据集和模型
diabetes = load_diabetes()
data = diabetes.data#划分
target = diabetes.target
print(data.shape)
print(target.shape)#数据结构
print('系数矩阵:',linear_model.LinearRegression().fit(data,target).coef_)#拟合得到系数
输出:
(442, 10)
(442,)
系数矩阵: [ -10.01219782 -239.81908937 519.83978679 324.39042769 -792.18416163
476.74583782 101.04457032 177.06417623 751.27932109 67.62538639]
任务四、手写数字数据(1797, 64)
#任务四 手写数字数据
#在jupyter 上显示matplotlib
%matplotlib inline
#导入手写数字数据
from sklearn.datasets import load_digits
import matplotlib.pyplot as plt#画图工具
digits = load_digits()
data = digits.data
print(data)#查看数据解耦
print(data.shape)
#绘制数字
plt.matshow(digits.images[0])
plt.show()
输出:
[[ 0. 0. 5. ... 0. 0. 0.]
[ 0. 0. 0. ... 10. 0. 0.]
[ 0. 0. 0. ... 16. 9. 0.]
...
[ 0. 0. 1. ... 6. 0. 0.]
[ 0. 0. 2. ... 12. 0. 0.]
[ 0. 0. 10. ... 12. 1. 0.]]
(1797, 64)
任务五、生成100数据点并可视化
#任务五 生成100数据点并可视化
#生成具有两个类别的100个二维样本点并进行数据可视化
from sklearn import datasets
import matplotlib.pyplot as plt#导入数据可视化工具和画图工具
#自主生成具有两个自变量 属性的数量为100的样本集
'''n_samles:控制生成的样本点的个数
n_features:控制与类别有关的自变量的维数
n_classes:控制生成的分类数据类别的数量'''
data,target = datasets.make_classification(n_samples=100,
n_features=2,n_informative=2,n_redundant=0,n_repeated=0,
n_classes=2,n_clusters_per_class=1)
#输出自变量属性和目标变量属性结构
print(data.shape)
print(target.shape)
#可视化
plt.scatter(data[:,0],data[:,1],c=target)
plt.show()
输出:
(100, 2)
(100,)
/usr/local/conda/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 8722 missing from current font.
font.set_text(s, 0.0, flags=flags)
/usr/local/conda/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:180: RuntimeWarning: Glyph 8722 missing from current font.
font.set_text(s, 0, flags=flags)