duangsuse::Echo
#Python 四舍五入能『优化“矢量化”后的预测结果准确率』一看可能不是正确答案,但是我会用实践测试一下它是不是正确的 首先看看这个 wiki 页面,我们提取 HTML 表格数据(下面的编程风格不值得学习,复用性也很差,是我自己瞎堆的,因为我不熟悉 JQuery,,,) let table = $('table.wikitable.sortable') .filter((_, e) => e.firstElementChild.innerText === "费雪鸢尾花卉数据集").get(0);…
#ML #Python 接下来安装一点用于数据分析的东西
我们使用 Python 3,当然,要是有 IPython 和 Spyder 这种为数据分析 REPL 优化的东西就更好了,不过下面直接用 IPython3
现代机器学习算法主要包含概念学习、规则学习、基于解释学习、基于实例学习、遗传学习、强化学习、贝叶丝学习、神经网络、决策树等分类,当然我也不是很清楚都有啥大区别,反正就是数据分析就对了。
然后函数式编程一般有以下特征 #FP
+ 闭包、高阶函数、函数作为值
+ 基于 Lambda calculus、柯里化(currying)
+ 纯函数无副作用、引用透明、惰性求值
+ 模式匹配,递归作为程序控制基本方式
.... 跑题了,打住。
机器学习某度词条里说是
然后我现在”尤其“喜欢神经网络,不过很可惜还没有入门😑 不是因为神经网络复杂(一般我们手动会讨论的基本都是些小网络和网络结构什么的,然后还会讨论学习算法,神经元基本模型本身并不复杂)
在等待下载的时候可以先定义几个函数,首先我们要用
我可不擅长黑箱教学是̶因̶为̶话̶太̶多̶的̶缘̶故̶么̶
说起来这个教程居然还提到了 Python 有 Complex numbers(数学上的复数,包含实数和虚数单位)算是『惊喜』吗?
然后我们有了算法输入了(按照某学姐的说法,神经网络就是一个带有未知参数的程序,那机器学习的很多算法也差不多,这里是有仨输入仨未知系数一输出的数学函数,我们的学习算法会”猜“一个最优化的系数组)
那先按某个比率 k 切分学习数据和测试数据来的,定义函数
有点秀而且华而不实甚至有问题(跑)其实实践中不应该这么做,但是这里不是实践,所以推荐大家打开思路去实现算法
然后考虑一下最后的验证,测试预测准确率的函数
然后简单 play 一下,Python 表达起来也很方便
+ (书上的例子)Pip 已安装软件包
但是!在其他新兴的编程语言(比如 Kotlin)里!这些功能基本都是可以直接用面向对象多态重载、运算符重载、高阶函数定义出来的! 🤔
+ 简单的数据折线图(plot)
数据可视化!
和
pip3 install --user --compile -U pandas matplotlib sklearn
如果有权限你也可以去掉 --user
flag,-U
的意思是如果有的话安装更新我们使用 Python 3,当然,要是有 IPython 和 Spyder 这种为数据分析 REPL 优化的东西就更好了,不过下面直接用 IPython3
现代机器学习算法主要包含概念学习、规则学习、基于解释学习、基于实例学习、遗传学习、强化学习、贝叶丝学习、神经网络、决策树等分类,当然我也不是很清楚都有啥大区别,反正就是数据分析就对了。
然后函数式编程一般有以下特征 #FP
+ 闭包、高阶函数、函数作为值
+ 基于 Lambda calculus、柯里化(currying)
+ 纯函数无副作用、引用透明、惰性求值
+ 模式匹配,递归作为程序控制基本方式
.... 跑题了,打住。
机器学习某度词条里说是
”机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。“
其实你记住,无非就是数学的统计、概率、函数、微积分,然后加上计算机科学的算法、软件工程什么的最多了,其他的我们这些渣渣也用不到。然后我现在”尤其“喜欢神经网络,不过很可惜还没有入门😑 不是因为神经网络复杂(一般我们手动会讨论的基本都是些小网络和网络结构什么的,然后还会讨论学习算法,神经元基本模型本身并不复杂)
在等待下载的时候可以先定义几个函数,首先我们要用
sklearn
里实现的 linear regression 学习实现我可不擅长黑箱教学是̶因̶为̶话̶太̶多̶的̶缘̶故̶么̶
说起来这个教程居然还提到了 Python 有 Complex numbers(数学上的复数,包含实数和虚数单位)算是『惊喜』吗?
然后我们有了算法输入了(按照某学姐的说法,神经网络就是一个带有未知参数的程序,那机器学习的很多算法也差不多,这里是有仨输入仨未知系数一输出的数学函数,我们的学习算法会”猜“一个最优化的系数组)
那先按某个比率 k 切分学习数据和测试数据来的,定义函数
splitTrainingTestData
from pandas import DataFrame
def splitTrainingTestData(ts: DataFrame, kratio: int = 60) -> (DataFrame, DataFrame):
assert kraito <= 100, "kratio must be valid integral percentage"... 刚才把
(txs, drs) = ts.values.tolist(), round(100 / kratio)
training = txs[::drs]; testset = [x for x in txs if x not in training]
return training, testset
kraito
放到 ts
前面去了,Haskell 写多了的结果... (柯里化)有点秀而且华而不实甚至有问题(跑)其实实践中不应该这么做,但是这里不是实践,所以推荐大家打开思路去实现算法
然后考虑一下最后的验证,测试预测准确率的函数
verifyRegressionAccuracy
当然,为了优雅性这时候可以给表格加上头(header)了,就是在它的第一行写上 x,y,z,w
... 就是给数据列命名def verifyRegressionAccuracy(ts: DataFrame, emax: float = 0.1, npredict = 'predict', ntruth = 'real') -> float:总之就是先弄出 acceptable result 然后 len 取分数啦
predicteds, truths = ts[npredict], ts[ntruth]
acceptables = [t for (i, t) in enumerate(predicteds) if abs(t - truths[i]) <emax]
return len(acceptables) / len(predicteds)
然后简单 play 一下,Python 表达起来也很方便
+ (书上的例子)Pip 已安装软件包
from pandas import DataFrame隐隐约约会感受到 Python 的确是数据处理很方便,有不少遍历语法(slice 和复制的
from pkg_resources import working_set
import re
dists = [(d.project_name, d.version) for d in working_set]
pkgs = DataFrame()
pkgs['name'] = [n for (n, _) in dists]
pkgs['version'] = [v for (_, v) in dists]
pkgs.tail(5)
pkgs.sort_values('version').head(10)
pkgs.describe()
pkgs['version'].describe()
pkgs['version'].map(lambda v: int(re.sub('rc|dev|\.','', v))).astype(int)
[:]
下标、list comprehension [... for ... in ... if ...]
)但是!在其他新兴的编程语言(比如 Kotlin)里!这些功能基本都是可以直接用面向对象多态重载、运算符重载、高阶函数定义出来的! 🤔
+ 简单的数据折线图(plot)
from matplotlib import pyplot as plot然后一个简单的 sin
from pandas import Series
from math import sin
series
, 很经典吧?xs = range(0,200, 3)很可惜没有使用 float 的 range... 也罢
ys = [sin(x) for x in xs]
但是数据不容易看见,谁对着那堆数字有感觉啊!数据可视化!
plot.style.available
... 看看可以有啥绘图风格plot.style.use('Solarize_Light2')然后
Series(ys).plot()
或者plot.plot(ys)
均可,之后可以选择 plot.show()
(貌似没有用)和
plot.savefig('path.png')
—Wikipedia
線性回歸
一種迴歸分析