klearn基础学习(还没学完

sklearn基础学习(还没学完)

基础

import numpy as np
from sklearn import  datasets# 数据库,供机器去学习
from  sklearn.model_selection import train_test_split
from  sklearn.neighbors import KNeighborsClassifier
# 数据库详解https://blog.csdn.net/juliarjuliar/article/details/87085385
iris = datasets.load_iris()# 这是一个数据样本,鸢尾花卉数据集
iris_X = iris.data
iris_y = iris.target
print(iris_X[:2,:])# 一行代表的是话的长度,宽度,。。。。。
print(iris_y)# 目标结果
x_train,x_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3)
#                            随机将样本集合划分为训练集 和测试集     指的是0.3做于测试,0.7做于例题
print(y_train)
knn = KNeighborsClassifier()
knn.fit(x_train,y_train)# 已经学习完了
print(knn.predict(x_test))
print(y_test)

from  sklearn.linear_model import LinearRegression
#       回归模型                 线性模型
loaded_data = datasets.load_boston()# 数据是回归模型的,所以要用回归模型
x = loaded_data.data
y = loaded_data.target
model = LinearRegression()# 记得打括号
model.fit(x,y)# 开始学习,载入了解题方法
print(model.predict(x[:4,:]))# 使用截图方法,去接前四个
print(y[:4])# 这是前四个答案

import matplotlib.pyplot as plt
# 自己创造数据
x,y = datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=1)
#                                                                     会有更加多的误差
plt.scatter(x,y)
plt.show()

属性

from  sklearn.linear_model import LinearRegression
from sklearn import datasets

loaded_data = datasets.load_boston()
x = loaded_data.data
y = loaded_data.target
model = LinearRegression()
model.fit(x,y)
# 因为这个是LinearRegression,线性回归的学习
# 所以有以下的参数
print(model.coef_)# 斜率
print(model.intercept_)# 截距

print(model.get_params())
# 显示model的参数

print(model.score(x,y))
# 用x来测试,得出的数据与y进行对比,就是打分,有百分之多少是正确的

normalization

from sklearn import preprocessing
import numpy as np
a = np.array([[10,2.7,3.6],
              [-100,5,-2],
              [120,20,40]],dtype=np.float64)
# print(a)
# print(preprocessing.scale((a)))
# preprocessing标准化可以让数据的跨度变小,可以更好的学习计算



# sklearn.datasets.samples_generator模块在0.22版中已弃用,在0.24版中将被删除。 应从sklearn.datasets导入相应的类/函数。
# 将sklearn.datasets.samples_generator改为:
# from sklearn.datasets import make_classification

# scoring='mean_squared_error'将在0.20以后弃用,现在改成了scoring='neg_mean_squared_error',直接替换就行了

# sklearn.cross_validation在1.9版本以后就被弃用了,1.9版本的以后的小伙伴可以用sklearn.model_selection就行了,后面一样的
from sklearn.model_selection import train_test_split# 数据切开来,一份学习,一份测试
from sklearn.datasets import make_classification# 创建数据
from sklearn.svm import SVC
import matplotlib.pyplot as plt# 图像

x,y = make_classification(n_samples=300,n_features=2,n_redundant=0,
                          n_informative=2,random_state=22,n_clusters_per_class=1,scale=100)
# plt.scatter(x[:,0],x[:,1],c=y)
# #         数据1    数据2    颜色的决定
# plt.show()
x = preprocessing.scale(x)
# x = preprocessing.minmax_scale(x,feature_range=(0,1))# 浓缩到
# 默认是-1到1的范围
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)
clf = SVC()# 解题方法
clf.fit(x_train,y_train)# 锻炼解题方法
# 练习用的  例题  答案
print(clf.score(x_test,y_test))
# 不是用preprocessing.scale的时候正确率会降低
# 因为preprocessing.scale会把一些偏难怪题给压缩到常规题。。
# 自然正确率就高

深度学习

一般来说
学习的时间和正确率成正比

当你过度的学习例题的时候
你会过于依赖例题,对考试的题目不太会,没有拓展
所以他的精确度反而会降低

这个时候就可以使用交叉验证
就是一堆题目,1,2,3,4,5
第一次那5作为考试,1,2,3,4做例题
第二次那4.。。。。以此类推

交叉验证

from sklearn.model_selection import cross_val_score # K折交叉验证模块

from sklearn.datasets import load_iris # iris数据集
from sklearn.model_selection import train_test_split # 分割数据模块
from sklearn.neighbors import KNeighborsClassifier # K最近邻(kNN,k-NearestNeighbor)分类算法

#加载iris数据集
iris = load_iris()
X = iris.data
y = iris.target

#分割数据并
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=4)

#建立模型
knn = KNeighborsClassifier(n_neighbors=5)
#                        使用5道例题去获得答案,如果题目做多了,那么就会过度依赖例题前面有讲
# 所以我们可以去测试,使用可视化来测试
#训练模型
knn.fit(X_train, y_train)
scores = cross_val_score(knn, X, y, cv=5, scoring='accuracy')
# 五道题目,五道题目分别作为不同的例题

#将5次的预测准确率打印出
print(scores)
# [ 0.96666667  1.          0.93333333  0.96666667  1.        ]
#将5次的预测准确平均率打印出
print(scores.mean())
# 0.973333333333

import matplotlib.pyplot as plt
k_range = range(1, 31)
k_scores = []
for k in k_range:
    knn = KNeighborsClassifier(n_neighbors=k)# 开始测试
    scores = cross_val_score(knn, X, y, cv=10,)
    #                                   十份题目
    # loss = -cross_val_score(knn, X, y, cv=10, scoring='neg_mean_squared_error')
    k_scores.append(scores.mean())
    # 每次运行的平均结果

plt.plot(k_range, k_scores)
plt.xlabel('Value of K for KNN')
plt.ylabel('Cross-Validated MSE')
plt.show()
# 可知,中间高,后面就是过度拟合,所以就误差变大

卷死我了
累死

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值