# -*- 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与机器学实践-何宇健 源代码及过程中遇到的问题的更多相关文章

  1. 【机器学*】k*邻算法-03

    心得体会: 需要思考如何将现实对象转化为特征向量,设置特征向量时记住鸭子定律1 鸭子定律1 如果走路像鸭子.说话像鸭子.长得像鸭子.啄食也像鸭子,那它肯定就是一只鸭子 事物的外在特征就是事物本质的表现 ...

  2. 【机器学*】k*邻算法-02

    k邻*算法具体应用:2-2约会网站配对 心得体会: 1.对所有特征值进行归一化处理:将特征值单位带来的距离影响消除,使所有特征同权重--然后对不同的特征进行加权2.对于相互独立的特征,可以通过建立(特 ...

  3. Python & 机器学习之项目实践

    机器学习是一项经验技能,经验越多越好.在项目建立的过程中,实践是掌握机器学习的最佳手段.在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的. 预测模型项目模板不能 ...

  4. paip.python连接mysql最佳实践o4

    paip.python连接mysql最佳实践o4 python连接mysql 还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰.. python标准库没mysql库,只 ...

  5. paip.python ide 总结最佳实践o4.

    paip.python ide 总结最佳实践o4. ====2个重要的标准 1.可以自动补全 2.可以断点调试 =======选型使用报告 Komodo正好儿俄机器上有,使用累挂,自动补全还凑火.就是 ...

  6. Python数据分析入门与实践 ✌✌

    Python数据分析入门与实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 这是一个数据驱动的时代,想要从事机器学习.人工智能.数据挖掘等前沿技术,都离不开 ...

  7. Python数据分析入门与实践

    Python数据分析入门与实践 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关 ...

  8. 【机器学*】k-*邻算法(kNN) 学*笔记

    [机器学*]k-*邻算法(kNN) 学*笔记 标签(空格分隔): 机器学* kNN简介 kNN算法是做分类问题的.思想如下: KNN算法的思想总结一下:就是在训练集中数据和标签已知的情况下,输入测试数 ...

  9. Python 从入门到实践 试一试 参考代码

    这两天学习Python 看了python从入门到实践的书籍,里面有课后题“试一试” 然后就跟着写了,代码在以下地址,如果需要自取 https://files.cnblogs.com/files/fud ...

随机推荐

  1. MongoDB之分片集群(Sharding)

    MongoDB之分片集群(Sharding) 一.基本概念 分片(sharding)是一个通过多台机器分配数据的方法.MongoDB使用分片支持大数据集和高吞吐量的操作.大数据集和高吞吐量的数据库系统 ...

  2. CentOS安装EPEL Remi

    EPEL,Remi 因为Centos官方源很多软件都没有,编译安装又比较麻烦,可以安装EPEL源Remi源解决此问题. CentOS 5.x : wget http://dl.fedoraprojec ...

  3. CentOS 7 安装Java 1.8

    携程的Apollo配置中心服务端[https://github.com/ctripcorp/apollo/wiki]推荐的Java版本是:1.8+, 本文介绍如何在CentOS上安装java 1.8. ...

  4. Linux下配置SNAT上网

    局域网有一台主机A,没有公网的IP, 也就是没有办法直接连到互联网上下载东西,同时内网有另外一台主机B,有公网接入.这个时候为了让A连接到互联网,我把B设置成NAT主机,A的网关指向B.准确的来说,现 ...

  5. Inspinia_admin-V2.3原版(英文)

    Inspinia_admin-V2.3原版(英文) Inspinia_admin-V2.3 BootStrap原版(英文) 原版是老外开发的,结果 国内某人翻译成中文版进行二次开发 卖998 演示地址 ...

  6. ob_start、ob_get_contents使用

    要善于ob_start.ob_get_contents使用, 比如需要ajax获取 请求页面的模板信息 这个时候用到就很便捷 ob_start(); $this->assign('config' ...

  7. Ajax疯狂讲义

    Ajax: async javascript and xml 异步的JS和XML AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这 ...

  8. 一个简单清晰的Redis操作类

    <?php /** * redis处理的二次封装 * */ class Redis{ private $_redis; private $_config; public function __c ...

  9. Codeforces475D - CGCDSSQ

    Portal Description 给出长度为\(n(n\leq10^5)\)的序列\(\{a_n\}\),给出\(q(q\leq3\times10^5)\)个\(x\),对于每个\(x\),求满足 ...

  10. LRUCache原理分析

    一.注释 LRUCache的原理,基本都在注释里面描述清楚了. /** * A cache that holds strong references to a limited number of va ...