使用计算机生成的数据集进行聚类分析,sklearn常见算法及其Api的使用

sklearn常见算法及其Api的使用

sklearn常见算法及其Api的使用

1. sklearn的六大板块:

分类: Classification

回归: Regression

聚类:Clustering

维数约简:Dimensional Reduction

模型选择:Model Selection

数据预处理:Preprocessing

2. 监督学习/无监督学习下的各个模块及调用方法

2.1 监督学习的各个模块

neighbors: 近邻算法

SVM: 支持向量机

kernal_ridge: 核岭回归

discriminant_analysis: 判别分析

linear_model: 广义线性模型

ensemble: 集成方法

tree: 决策树

naive_bayes: 朴素贝叶斯

cross_decomposition: 交叉分解

gaussion_process: 高斯过程

neural_network: 多层神经网络

calibration: 概率校准

isotonic: 保序回归

feature_selection: 监督特征选择

multiclass: 多类多标签算法

2.2 无监督学习各个模块

decomposition: 矩阵因子分解

cluster: 聚类分析

manifold: 流行学习

mixture: 高斯混合模型

neural_network: 无监督神经网络

density: 密度估计

covariance: 协方差估计

2.3 数据变换模块

feature_extraction: 特征提取

feature_selection: 特征选择

preprocessing: 数据预处理

random_projection: 随机投影

kernal_approximation: 核逼近

pipline: 管道流

调用方法:from sklearn import model(model 表示对应的模型)

例如:调用决策树回归分析模块

from sklearn import tree

model = tree.DecisionTreeRegressor()

API调用方法

3.1 统一调用

estimator.fit(x_train,[y_train]) [ ]表示无监督模块无y

estimator.predict(x_test) estimator.transform(x_test)

Classification Preprocessing

Regression Dimensionally Reduction

clustering Feature Extraction

Feature Selection

3.2 数据集的加载方式 Dataset Loading

sklearn自带的小数据集的加载(Packaged Dataset)

sklearn.datasets.load_datanema(对应的数据集名称,可在官方API介绍中查看)

以导入波士顿房价数据集为例:

sklearn.datasets.load_boston

在线下载的数据集(Downloadable Dataset)

sklearn.datasets.fetch_dataname(下载的数据集名称)

计算机生成的数据集(Generated_Dataset)

sklearn.datasets.make_dataname(生成的数据集名称)

svmlight/libsvm 格式的数据集

sklearn.datasets.load_svmlight_file(对应文件在磁盘中的地址)

从mldata.org(一个机器学习数据集网站)在线下载获取数据集

注:更多API接口在需要的时候从官方API介绍查看使用。

4.利用sklearn进行分析的基本流程

准备我们所需要的数据集即加载数据集 (Loading datasets)

–选择合适的方式将我们要处理的数据集加载到内存中,这里以从UCI下载的数据集为例

#python3.6

import numpy as np

import urllib

# 导入数据集所在网址

url = "http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"

# 借用urlopen 将数据集导入

raw_data = urllib.urlopen(url)

# 以矩阵形式存储数据

dataset = np.loadtxt(raw_data, delimiter=",")

# 观察数据特征并进行适当的切分

X = dataset[:,0:7]

y = dataset[:,8]

数据处理 (Preprocessing)

– 由于我们所用到的大多数机器学习回归算法以梯度下降法为主,且对数据的缩放和尺度较为敏感,所以我们在使用数据前应该进行数据归一化,归至(-1,1)或者(0,1)之间。

– 不过sklearn作为强大的机器学习模块,已经内置了normalize(),scale()等函数,便于我们对数据的归一化。

#归一化在数据预处理板块中

from sklearn import preprocessing

# normalize the data attributes

normalized_X = preprocessing.normalize(X)

# standardize the data attributes

standardized_X = preprocessing.scale(X)

特征选择 (Feature selection)

– 根据已有数据要想拟合出我们需要的回归曲线,最重要的就是特征选择,到底数据集中的哪些规律值得我们重视呢?

– 往往在面对不同的实际问题时,对应的特征复杂程度也不同,这需要很强的专业知识,但做为初学者,sklearn内置的函数就够我们进行分析使用。

#以决策树的特征提取为例

from sklearn import metrics

from sklearn.ensemble import ExtraTreesClassifier

model = ExtraTreesClassifier()

model.fit(X, y)

算法的选择(Choose the algorithm)

– 针对不同的问题我们可以选择不同的回归方法进行分析,具体展示在下面一栏。

5. 常用回归分析的实现及对比

5.1 首先我们准备下所需要的数据集,这里的数据采用计算机随机生成。

import numpy as np

import matplotlib.pyplot as plt

#Prepare the data we need

def f(x1,x2):

y = 0.5 * np.sin(x1) + 0.5 * np.cos(x2) + 0.1 * x1 + 3

return y

#creat training data and test data

def LoadData():

x1_train = np.linspace(0, 50,500)

x2_train = np.linspace(-10, 10,500)

data_train = np.array([[x1,x2,f(x1, x2) + (np.random.random(1)-0.5)] for x1,x2 in zip(x1_train, x2_train)])

x1_test = np.linspace(0, 50,100) + 0.5 * np.random.random(100)

x2_test = np.linspace(-10, 10,100) + 0.02 * np.random.random(100)

data_test = np.array([[x1,x2,f(x1, x2)] for x1,x2 in zip(x1_test, x2_test)])

return data_train,data_test

train,test = LoadData()

x_train,y_train = train[:,:2],train[:,2]

x_test,y_test = test[:,:2],test[:,2]

5.2 定义拟合函数,以便重复调用实现不同的回归方法

def TryDifferentMethod(model):

model.fit(x_train,y_train)

score = model.score(x_test,y_test)

result = model.predict(x_test)

plt.figure()

plt.plot(np.arange(len(result)),y_test,'go-',label='true value')

plt.plot(np.arange(len(result)),result,'ro-',label='predict value')

plt.title('score:%f'%score)

plt.legend()

plt.show()

5.3 这里使用经常用到的五种回归方法进行展示

# 1.DecisionTree Regression

from sklearn import tree

model_DecisionTreeRegressor = tree.DecisionTreeRegressor()

#TryDifferentMethod(model_DecisionTreeRegressor)

# 2.LinearRegression

from sklearn import linear_model

model_LinearRegression = linear_model.LinearRegression()

#TryDifferentMethod(model_LinearRegression)

# 3.SVM Regression

from sklearn import svm

model_SVMRegression = svm.SVR()

#TryDifferentMethod(model_SVMRegression)

# 4.KNN Regression

from sklearn import neighbors

model_KNeighborsRegressor = neighbors.KNeighborsRegressor()

#TryDifferentMethod(model_KNeighborsRegressor)

# 5.RandomForest Regression

from sklearn import ensemble

model_RandomForestRegressor = ensemble.RandomForestRegressor(n_estimators=22) # Use 22 Decision Trees

#TryDifferentMethod(model_RandomForestRegressor)

为了更明显的对比初差距,将可视化后的图像呈现出来:

1.线性回归方法

c19fa50ab37fcbdc39bd1cf9f977d109.png

2.决策树回归方法

b6b1db9fb9a87d0e86330631da4abf97.png

3.支持向量机回归方法

b222d066279908eb9b47e04b59c08724.png

4.KNN回归方法

d45aaa28de8f9279e599a88a58cfbc4a.png

5.随机森林回归方法

6cb6da5a92f75174b7b62f9ba32f76b3.png

sklearn常见算法及其Api的使用相关教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值