# 线性回归三种:普通线性回归、岭回归、lasso回归
import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
# 获取数据
X, y = mglearn.datasets.load_extended_boston()
# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
print("普通线性回归")
# 普通线性回归算法(无正则化)
lr = LinearRegression().fit(X_train, y_train)
print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lr.score(X_test, y_test)))
print("岭回归")
# 岭回归算法(普通线性加入正则化L2,正则化参数默认为1)
ridge = Ridge().fit(X_train, y_train)
print("Training set score: {:.2f}".format(ridge.score(X_train, y_train)))
print("Test set score: {:.2f}".format(ridge.score(X_test, y_test)))
# 将正则化参数设为10,减少拟合能力,增加泛化能力(提高偏差,降低方差)
ridge10 = Ridge(alpha=10).fit(X_train, y_train)
print("Training set score: {:.2f}".format(ridge10.score(X_train, y_train)))
print("Test set score: {:.2f}".format(ridge10.score(X_test, y_test)))
# 将正则化参数设为0.1,减少泛化能力,增加拟合能力(提高方差,降低偏差)
ridge01 = Ridge(alpha=0.1).fit(X_train, y_train)
print("Training set score: {:.2f}".format(ridge01.score(X_train, y_train)))
print("Test set score: {:.2f}".format(ridge01.score(X_test, y_test)))
print("lasso回归")
# lasso回归算法(普通线性加入正则化L1,正则化参数默认为1,会自动忽略一些不重要的特征)
lasso = Lasso().fit(X_train, y_train)
print("Training set score: {:.2f}".format(lasso.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lasso.score(X_test, y_test)))
print("Number of features used:", np.sum(lasso.coef_ != 0))
# 将正则化参数设为0.01,参数降低,特征值数量保留变多。减少泛化能力,增加拟合能力(提高方差,降低偏差)
# "max_iter"运行迭代的最大次数
# otherwise the model would warn us that we should increase max_iter.
lasso001 = Lasso(alpha=0.01, max_iter=100000).fit(X_train, y_train)
print("Training set score: {:.2f}".format(lasso001.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lasso001.score(X_test, y_test)))
print("Number of features used:", np.sum(lasso001.coef_ != 0))
lasso00001 = Lasso(alpha=0.0001, max_iter=100000).fit(X_train, y_train)
print("Training set score: {:.2f}".format(lasso00001.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lasso00001.score(X_test, y_test)))
print("Number of features used:", np.sum(lasso00001.coef_ != 0))
plt.plot(ridge.coef_, 's', label="Ridge alpha=1")
plt.plot(ridge10.coef_, '^', label="Ridge alpha=10")
plt.plot(ridge01.coef_, 'v', label="Ridge alpha=0.1")
plt.plot(lr.coef_, 'o', label="LinearRegression")
plt.xlabel("Coefficient index")
plt.ylabel("Coefficient magnitude")
# 获取当前x轴左,右数值
xlims = plt.xlim()
# 画一条横线第一个参数y坐标,第二个x起点,第三个x终点
plt.hlines(0, xlims[0], xlims[1])
plt.xlim(xlims)
plt.ylim(-25, 25)
# 自动获取签名
plt.legend()
plt.show()
# 这个学习曲线展示
mglearn.plots.plot_ridge_n_samples()
plt.show()
plt.plot(lasso.coef_, 's', label="Lasso alpha=1")
plt.plot(lasso001.coef_, '^', label="Lasso alpha=0.01")
plt.plot(lasso00001.coef_, 'v', label="Lasso alpha=0.0001")
plt.plot(ridge01.coef_, 'o', label="Ridge alpha=0.1")
# ncol表示图例展示列数,loc表示图例显示位置
# X,y用于定位图例,也可用单键词"bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right" and "center"代替
plt.legend(ncol=2, loc=(0, 1.05))
plt.ylim(-25, 25)
plt.xlabel("Coefficient index")
plt.ylabel("Coefficient magnitude")
plt.show()
没有合适的资源?快使用搜索试试~ 我知道了~
pycharm中机器学习练习.zip
共23个文件
py:19个
xml:3个
iml:1个
需积分: 5 0 下载量 119 浏览量
2024-04-07
11:55:19
上传
评论
收藏 17KB ZIP 举报
温馨提示
机器学习是人工智能及模式识别领域的共同研究热点,其理论和方法已被广泛应用于解决工程应用和科学领域的复杂问题。2010年的图灵奖获得者为哈佛大学的Leslie vlliant教授,其获奖工作之一是建立了概率近似正确(Probably Approximate Correct,PAC)学习理论;2011年的图灵奖获得者为加州大学洛杉矶分校的Judea Pearll教授,其主要贡献为建立了以概率统计为理论基础的人工智能方法。这些研究成果都促进了机器学习的发展和繁荣。 [2] 机器学习是研究怎样使用计算机模拟或实现人类学习活动的科学,是人工智能中最具智能特征,最前沿的研究领域之一。自20世纪80年代以来,机器学习作为实现人工智能的途径,在人工智能界引起了广泛的兴趣,特别是近十几年来,机器学习领域的研究工作发展很快,它已成为人工智能的重要课题之一。机器学习不仅在基于知识的系统中得到应用,而且在自然语言理解、非单调推理、机器视觉、模式识别等许多领域也得到了广泛应用。一个系统是否具有学习能力已成为是否具有“智能”的一个标志。机器学习的研究主要分为两类研究方向:第一类是传统机器学习的研究,该类研究主要是研究学习机制,注重探索模拟人的学习机制;第二类是大数据环境下机器学习的研究,该类研究主要是研究如何有效利用信息,注重从巨量数据中获取隐藏的、有效的、可理解的知识。 [2] 机器学习历经70年的曲折发展,以深度学习为代表借鉴人脑的多分层结构、神经元的连接交互信息的逐层分析处理机制,自适应、自学习的强大并行信息处理能力,在很多方面收获了突破性进展,其中最有代表性的是图像识别领域。
资源推荐
资源详情
资源评论
收起资源包目录
pycharm中机器学习练习.zip (23个子文件)
content
Test1.py 118B
Test4.py 197B
TestCode.py 154B
.idea
m_l_test.iml 453B
vcs.xml 180B
misc.xml 288B
modules.xml 268B
Test3.py 320B
class2-supervised
2_line_three.py 4KB
5_SVM_line.py 3KB
8_MLP.py 3KB
4_one-vs.-rest.py 2KB
3_logistic_linearSVM.py 3KB
9_MLP_test.py 2KB
6_SVM_gaos.py 1KB
1_line_basic.py 1KB
7_SVM_gaos_num_op.py 2KB
Test2.py 268B
class1-introduction
__init__.py 2KB
class3-unsupervised
2_pca_face.py 845B
1_pca.py 3KB
3_K_means.py 2KB
4_K_means_face.py 23B
共 23 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3916
- 资源: 7441
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功