果宝机甲,归位(FR)

抽了个时间稍微了解了一下机器学习(Machine Learning),因为现在非常火,所以还是需要了解一下的,即使不去深入,权当兴趣,故作此篇,兼怀“果宝特攻”🐸

Python的出现使得原本看起来比较复杂的机器学习变得人皆可用,暂且不去讨论使用者能否明白内部的具体原理,事实上也应该不需要,因为的出现,大大的简化了所谓机器学习的使用者的工作量,既然是使用,原理什么的自然不是很关心,重点是一些参数的接口,以及涉及精度和可靠性等之类的注意事项,这些往往是使用者的关注焦点,简而言之就是用函数

怎么用?当然有Official的文档可供查阅,随着PY这门语言的普及,Lib的不断扩大,原本在一些底层语言的开发状况下的具体问题的处理变得异常简单,简单到一个小学生都可以开直播教PY编程了

机器学习(ML)

并非真正智能化的机器,额,这并不是说机器不能智能的处理一些问题,ML是建立在严格的数学推导的基础上的,否则再大的数据集(Data Set),交给它,然后呢?没有严格证明的数学理论的支撑,没有基于数学理论的处理算法,它,啥也做不了🐸

机器学习确实很强大,强大到一些曾经经典的数学理论的证明,它都能给出来(当然是建立在已有前沿理论的基础上的),通过对数据的分析进而建立一个可靠的数学模型,利用数学模型进行Predict

细数起来这里面的数学理论很多,需要学的东西也很多,概念、公式、定理、算法……,从底层开始接触起,有其好处,因为在算法的进一步优化和数据的处理方面可能更加的信手拈来,但是,对于工程而言,似乎不需要过多的追究较深层次,因为大意在于应用

现有的一些经典模型算法已经可以在相当的程度上满足工程性的要求了,配上类PY的语言进行开发和运用,不成问题

问题一:利用给定数据集,综合其具体意义,实现未知数据集的预测(经典房价问题)

上述文件中的数据集,按列分布,其具体意义分别如下(供参考,实际意义不深究时影响不大)

要求选用具体的模型,利用训练集去预测测试集,自然分为Train和Test,这里需要注意的是,为了初步确定模型以及算法的表现如何,需要用验证集去先测试,再进行应用,否则,面对没有Target的新数据,算法的表现无法进行衡量

import pandas as pd
housing = pd.read_csv('kc_train.csv')
housing_del = housing.drop(housing.columns[1], axis = 1, inplace=False)

housing_tar = pd.read_csv('kc_train.csv', usecols = [1])

housing是最原始的真实值,原封不动的存储在kc_train.csv数据的直接体现,housing_del是取值除第二列(Target)的所有列值(可理解为输入项的各个属性值),housing_tar是标定值(Target),至此,训练集初始数据准备完毕(3000个)

print (housing_tar)

print (housing)
print (housing_del)

上三行代码用作先前验证数据集的正确性(脚本语言的好处),验证正确,训练集(PER+TARGET)没有问题,继续向下运算处理

minmax_scaler = MinMaxScaler()
minmax_scaler.fit(housing_del)

'''
进行内部拟合,内部参数会发生变化,测试数据集要保持和训练集的同分布

'''

scaler_housing = minmax_scaler.transform(housing_del)

scaler_housing = pd.DataFrame(scaler_housing,columns = housing_del.columns)

'''
print (scaler_housing)
'''

预处理,具体的目的是消除一些分布等之类的可能影响学习结果的问题,此处的处理可以视作是一个约定流程(YDSC)

LR_reg=LinearRegression()
LR_reg.fit(scaler_housing,housing_tar)

利用训练集进行训练,额,没有什么像书上说的那么多复杂的处理,比如说,数据需要进行分类啊,分为训练集和验证集啊还有什么测试集啊,注意分类需要考虑层次性问题啊,需要多次重复取平均值啊,诸如此类,真没看见

线性回归Lib只接受输入属性集和属性集对应的真实集,LinearRegression()即可根据输入数据直接进行建模,滑稽🐸,建模结果存储在自定义变量中

preds = LR_reg.predict(scaler_housing)
mse = mean_squared_error(preds,housing_tar)

利用训练集自身进行误差分析(这里是均方误差),实际上这个按照严格的标准,应当在验证集(或测试集)上进行,估计这里的数据集分类处理的比较到位吧,毕竟除了经典的留出法、交叉验证、自助法等等,它有更高级的减小影响的方式

plot.plot(x,housing_tar[:num],label = 'real')
plot.plot(x,preds[:num],label = 'pred')

取定100个数据(前100)进行该模型的表现的测试,整个3000个数据的均方误差(MSE)是48743886073.788284,对于这个数据集(目标量较大)而言,该值不算特别的大,但是该模型也不算够好

df_result = pd.DataFrame(result)
df_result.to_csv("result.csv")

文件写入保存,可供参考和处理,进一步使用更加新型的算法进行预测,比较等,存储起来!

Sensor’s data processing

这里可能不是单纯的线性模型问题,比如ANN模型在传感器值的处理方面还是很好用的,此处的处理常用作多分类问题而不是单纯的单分类(在一些经典的比赛中单分类会用),回归(在经典的传感器数据处理网络中更常用)

前些天还打算复现一篇TOP级论文的实验的,玛德,三个传感器加一个NI采集卡要几万,算了算了,贫穷限制了我的想象力🐸

虽然我的发型多了几分沧桑,眼神多了几分寂寞,但我依然是俏皮中略带稳重,轻佻中不失幽默,而潇洒中不失懒惰,如假包换的菠萝吹雪!

https://www.bilibili.com/video/av73092504

发表评论

电子邮件地址不会被公开。 必填项已用*标注