python与机器学实践-何宇健 源代码及过程中遇到的问题
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import numpy as np
import matplotlib.pyplot as plt
#第一步 获取与处理数据
x,y=[],[] #定义存储输入数据和目标数据的数组
for sample in open('a.txt','r'): #遍历数据集并保存
_x,_y=sample.split(",")
x.append(float(_x))
y.append(float(_y))
x,y=np.array(x),np.array(y) #转化为numpy数组
x=(x-x.mean())/x.std() #标准化
#将原始数据以散点图的形式画出
plt.figure()
plt.scatter(x,y,c="g",s=6)
plt.show
#第二步:选择与训练模型
#模型:多项式拟合 多项式拟合散点是线性回归很小的一部分
x0=np.linspace(-2,4,100) #在(-2,4)这个区间上取100个点作为画图的基础
#核心代码 仔细研究 建立回归模型
def get_model(deg):#得到模型,这一步尤其重要,要仔细分析
return lambda input_x=x0: np.polyval(np.polyfit(x,y,deg),input_x)
def get_cost(deg,input_x,input_y):#返回损失值
return 0.5*((get_model(deg)(input_x)-input_y)**2).sum()
test_set={1,4,10}
for d in test_set:
print(get_cost(d,x,y))
#第三步:评估与可视化结果
plt.scatter(x,y,c="g",s=20)#s是点的大小即size
for d in test_set:
plt.plot(x0,get_model(d)(),label="degree={}".format(d))
plt.xlim(-2,4)
plt.ylim(1e5,8e5)
plt.legend()
plt.show
过程中遇到的问题:
1.在获取与处理数据的过程中,文件老是找不到,在这里有两种常见的错误
(1)FileNotFoundError: [Errno 2] No such file or directory: 'C:/a.txt'
错误分析与解决:可能是文件路径写错了,也可能是文件名写错了,检查自己设置的文件名后缀,我的错误就是没注意文件名后缀,结果我的文件名实际上是a.txt.txt,所以说一直提示我找不到文件,后来在保存文件的地方重新设置显示文件扩展名,顺利解决问题,可以将数据文件和py源文件放在一个文件夹下,就可以只输入文件名,而不输入文件路径
(2)SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
错误分析与解决:
从他的博客取经的
@淘气小子
原因:
window 读取文件可以用\,但是在字符串中\是被当作转义字符来使用,所以’d:\a.txt’会被转义成’d:\a.txt’这是正确路径,所以不会报错。而‘C:\Users\FrankYuan\Pictures\Camera Roll\WIN_20161010_08_51_57_Pro.jpg ’中经过转义之后可能就找不到路径的资源了,例如\t可能就转义成tab键了。
解决办法
python在描述路径时可以有多种方式,现列举常见的三种
方式一:转义的方式
'd:\\a.txt'
方式二:显式声明字符串不用转义
'd:r\a.txt'
方式三:使用Linux的路径/ 最推荐
'd:/a.txt'
我强烈推荐第三种写法,这在Linux和window下都是行的通的。
2.标签的正确拼写 label 这个错误犯过很多次了,每次拼写成lable,导致报错,去网上搜还出来一堆看起来特别合理的解释,说什么IDE问题,哎,实际上就是粗心大意拼写错误
3.#核心代码 仔细研究 建立回归模型,多看多思考
def get_model(deg):#得到模型,这一步尤其重要,要仔细分析
return lambda input_x=x0: np.polyval(np.polyfit(x,y,deg),input_x)
def get_cost(deg,input_x,input_y):#返回损失值
return 0.5*((get_model(deg)(input_x)-input_y)**2).sum()
python与机器学实践-何宇健 源代码及过程中遇到的问题的更多相关文章
- 【机器学*】k*邻算法-03
心得体会: 需要思考如何将现实对象转化为特征向量,设置特征向量时记住鸭子定律1 鸭子定律1 如果走路像鸭子.说话像鸭子.长得像鸭子.啄食也像鸭子,那它肯定就是一只鸭子 事物的外在特征就是事物本质的表现 ...
- 【机器学*】k*邻算法-02
k邻*算法具体应用:2-2约会网站配对 心得体会: 1.对所有特征值进行归一化处理:将特征值单位带来的距离影响消除,使所有特征同权重--然后对不同的特征进行加权2.对于相互独立的特征,可以通过建立(特 ...
- Python & 机器学习之项目实践
机器学习是一项经验技能,经验越多越好.在项目建立的过程中,实践是掌握机器学习的最佳手段.在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的. 预测模型项目模板不能 ...
- paip.python连接mysql最佳实践o4
paip.python连接mysql最佳实践o4 python连接mysql 还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰.. python标准库没mysql库,只 ...
- paip.python ide 总结最佳实践o4.
paip.python ide 总结最佳实践o4. ====2个重要的标准 1.可以自动补全 2.可以断点调试 =======选型使用报告 Komodo正好儿俄机器上有,使用累挂,自动补全还凑火.就是 ...
- Python数据分析入门与实践 ✌✌
Python数据分析入门与实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 这是一个数据驱动的时代,想要从事机器学习.人工智能.数据挖掘等前沿技术,都离不开 ...
- Python数据分析入门与实践
Python数据分析入门与实践 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关 ...
- 【机器学*】k-*邻算法(kNN) 学*笔记
[机器学*]k-*邻算法(kNN) 学*笔记 标签(空格分隔): 机器学* kNN简介 kNN算法是做分类问题的.思想如下: KNN算法的思想总结一下:就是在训练集中数据和标签已知的情况下,输入测试数 ...
- Python 从入门到实践 试一试 参考代码
这两天学习Python 看了python从入门到实践的书籍,里面有课后题“试一试” 然后就跟着写了,代码在以下地址,如果需要自取 https://files.cnblogs.com/files/fud ...
随机推荐
- JSONP && CORS
前天面试被问到了跨域的问题,自我感觉回答的并不理想,下面我就分享一下整理后的总结分享给大家 一.为什么要跨域 安全限制 JavaScript或Cookie只能访问同域下的内容——同源策略 同源策略 下 ...
- qt的编译
cp qt-everywhere-opensource-src-5.5.0.tar.gz /opt/qt/2.1 解压qt源码 sudo tar xzf qt-everywhere-opensourc ...
- ajax常用操作
load的方法的使用(现在已不常用) <!doctype html><html lang="en"><head> <meta charse ...
- 一个网卡配置多个ip配置实现,centos7系统
仅一个网卡情况下,配置多个ip可以让该设备通过几个ip被访问,或隐藏常用ip,让其他人访问临时ip 一.永久性增加一个IP 方法1: vim /etc/sysconfig/network-script ...
- 应用负载均衡之LVS(三):使用ipvsadm以及详细分析VS/DR模式
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Dynamics CRM 2015-Ribbon In Basic Home Tab
前文中有说到关于Form上Ribbon的配置以及控制,而Ribbon Button还可以在其它地方的配置,今天就来说说在Basic Home Tab里面的配置,效果图如下: 具体配置Customiza ...
- 关于eclipse的mysql连接配置
打开eclipse,选择Window→Open Perspective→Other→Database Development,然后在右边的导航栏右键点击Database Connections文件夹, ...
- Servlet中请求重定向和请求转发和include
响应的重定向 response.sendRedirect("ShowMSgSerlet1");//请求重定向 会将后面的浏览器的url改变. 请求转发 RequestDispatc ...
- web3 - BOM&DOM
一.BOM (浏览器对象模型) 浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话". Window 对象 1.window.onresize // 1 w ...
- C++学习笔记第三天:类、虚函数、双冒号
类 class Box { public: double length; // 盒子的长度 double breadth; // 盒子的宽度 double height; // 盒子的高度 }; 类成 ...