假如 小明 2015 年 4 岁,2016 年 5 岁,2017 年 6 岁,那 2020 年小明几岁? 哪位高手能否指教下,如果使用 python 或 matlab 采用机器学习的方法推导出模型?
1
nznd 2020-10-16 16:36:49 +08:00
一时间不知道从哪里吐槽 虽然但是 深度学习确实可以做这个模型 有必要用机器学习吗?
|
2
iblislsy 2020-10-16 16:39:06 +08:00
这波啊,这波叫肉蛋充饥
|
3
superrichman 2020-10-16 16:44:11 +08:00 via iPhone
???我有很多问号
你是想找线性回归吗? |
4
raymanr 2020-10-16 16:48:16 +08:00 6
就是一般的线性回归就可以了
from sklearn.linear import LinearRegression m = LinearRegression() m.fit([[2015],[2016],[2017],[2018]],[4,5,6,7]) m.predict([[2020]]) |
5
Biggoldfish 2020-10-16 16:49:38 +08:00 1
|
6
jdhao 2020-10-16 16:50:38 +08:00 via Android
😂这尼玛需要机器学习?你是来钓鱼的?
|
7
raymanr 2020-10-16 16:54:11 +08:00 1
@raymanr 我打错了,是 sklearn.linear_model, 也不要冷嘲热讽了, 就当楼主是真的在求问吧, 谁不是一步步走过来的呢?
|
8
daijinming OP @raymanr 真的是在求问
|
9
capallen 2020-10-16 17:05:36 +08:00
import time,random
class AgeModel(): def fit(self,year_lst,age_lst): self.birth_year = sorted(year_lst)[0] - sorted(age_lst)[0] print("Training...") time.sleep(random.randint(5,10)) print("Model is ready.") def predict(self,pred_year): print("Predicting...") time.sleep(random.randint(1,4)) return (pred_year - self.birth_year) age_model = AgeModel() age_model.fit([2015,2016,2017,2018],[4,5,6,7]) age_model.predict(2020) (用这个模型,可以浪费你生命中的 6-14 秒) |
10
dcalsky 2020-10-16 17:07:16 +08:00 via Android
一层 dense 即可
|
11
Raven316 2020-10-16 17:11:20 +08:00
x-2011?
|
12
user8341 2020-10-16 17:11:42 +08:00
什么叫预测啊,起码要有点随机性吧?你这个明明是一个确定性的线性函数,哪里有丝毫随机性?
|
13
raycool 2020-10-16 17:14:28 +08:00 1
这个不就是 y = x - 2011
直接就完美拟合了。 |
14
daijinming OP @raycool 一般人都能推导出这个公式,我想咨询下大家,如何让机器也能推导出来,
|
16
jmc891205 2020-10-16 17:22:44 +08:00
对楼主这个例子,可以使用 scipy 的 leastsq(),用最小二乘法来拟合一个线型函数
|
17
daijinming OP @jmc891205 能不能给新手指教下,听着好像有道理,但是基本听不懂
|
18
raymanr 2020-10-16 17:27:30 +08:00 1
@daijinming 把年份视作系数矩阵, 年龄视作结果向量
year*x1+x2=age, 得到线性方程组 2015*x1+x2=4 2016*x1+x2=5 2017*x1+x2=6 2018*x1+x2=7, 然后解这个方程组得到 x1 和 x2 的值, 并用于预测 推荐可以买一些机器学习的书尝试一下手写一些常见算法就明白了一些回归和分类以及聚类的常见套路了 更深入的部分我能力有限,给不了建议 |
19
jmc891205 2020-10-16 17:36:25 +08:00
@daijinming 你随便 Google 搜一下"最小二乘法 leastsq",很多人写过这东西了。
|
20
Escapist367 2020-10-16 18:16:21 +08:00
import torch
inputs=[] outputs=[] for year1 in range(1900,2020): for year2 in range(1900,2020): for age1 in range(0,120): inputs.append([year1,year2,age1]) outputs.append([year2-year1+age1]) class LinearModel(torch.nn.Module): def __init__(self): super(LinearModel, self).__init__() self.linear = torch.nn.Linear(3, 1) def forward(self, inputs): outputs = self.linear(inputs) return outputs model = LinearModel().cuda() criterion = torch.nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) for epoch in range(100): Loss=0 for i in range(len(inputs)//1000): x=torch.tensor(inputs[i*1000:i*1000+1000]).cuda().float() y=torch.tensor(outputs[i*1000:i*1000+1000]).cuda().float() y_pred = model(x) loss = criterion(y, y_pred) optimizer.zero_grad() loss.backward() optimizer.step() Loss+=loss.item() print("Loss:%.2f"%Loss) print("1999 年 45 岁的人在 2020 年为%.0f 岁"%model(torch.tensor([1999,2020,45]).cuda().float())) print("1927 年 15 岁的人在 2020 年为%.0f 岁"%model(torch.tensor([1927,2020,15]).cuda().float())) print("1979 年 77 岁的人在 2020 年为%.0f 岁"%model(torch.tensor([1979,2020,77]).cuda().float())) |
21
TimePPT 2020-10-16 19:00:16 +08:00 via Android
假如 小明 2015 年 4 岁,2016 年 5 岁,2017 年 6 岁,那 2020 年小明几岁?
|
23
askfermi 2020-10-16 19:18:23 +08:00
|
24
glorifiedatom 2020-10-16 20:41:39 +08:00 via iPhone
|
25
jdhao 2020-10-16 21:01:39 +08:00 via Android
@glorifiedatom 2015 年四岁,2020 年岁数计算需要用机器学习?
|
26
Sunben 2020-10-16 21:06:22 +08:00
这还用机器?用人脑都能算出来,你看看你码代码和我算的哪个快点
|
27
vansl 2020-10-16 21:08:10 +08:00
楼主只是举了不恰当的例子,确实没必要冷嘲热讽,知道需要表达线性回归的意思就可以了
恰当的例子是房价预测,60 平方 100 万,90 平方 140 万,120 平方 160 万,预测 150 方的价格 |
28
glorifiedatom 2020-10-16 21:12:57 +08:00 via iPhone
@jdhao 前言不搭后语的。我说的根本不是这个问题。
|
29
glorifiedatom 2020-10-16 21:15:18 +08:00 via iPhone
人家好好问问题的,你好好说就行了,没必要看不起人家,开口就“来钓鱼的”。不惮用最坏的恶意揣测别人?
|
30
jdhao 2020-10-16 21:31:16 +08:00 via Android
@glorifiedatom 问问题不说清楚,还怪别人,巨婴性格?
|
31
jdhao 2020-10-16 21:34:04 +08:00 via Android 4
@glorifiedatom 这种问题如果在 stackoverflow,活不过一天,提问也不是不用任何努力的,问题都不说明,让别人回答啥?提问的智慧,值得每个人读一读。https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md
|
32
nznd 2020-10-17 00:41:27 +08:00
@glorifiedatom #24 我是在避免 XY problem 反问了是否需要机器学习 请问有问题吗?
|
33
littlewing 2020-10-17 00:45:50 +08:00
楼主只是举个例子而已吧,只是例子举得不好
|
34
superrichman 2020-10-17 02:42:34 +08:00 via iPhone
@glorifiedatom #24 对方问了一个奇怪的问题,我表示很疑惑,有什么问题吗?我敢肯定要是你拿这个问题到大街上去问,别人也会一脸迷茫。
我觉得他不确定自己需要什么,所以试探性给他一个关键词线性回归,根据他自己说的 python 模型 再加上线性回归,这三个关键词我觉得能搜出有用的信息的。 |
35
user8341 2020-10-17 02:47:29 +08:00
|
36
glorifiedatom 2020-10-17 10:08:22 +08:00 via iPhone
@jdhao
首先,开口就来钓鱼的。我只想说这反映了你的素质。 其次,这里不是 StackOverflow,V2 不是纯技术社区,程序员板块也不是纯技术板块,更何况不是每一个程序员都有机器学习 /统计背景。你用其他社区的标准要求别人无异于指鹿为马,居心叵测。 再次,你所谓的提问的智慧不是你攻击提问者的理由。如果你认为他这个问题问得不好,就提出建设性意见,而不是无端的嘲讽和攻击(“尼玛”,“钓鱼”)。你的行为不仅体现你个人的情商素质,还会打击提问者的信心,长期以往还会影响社区的氛围。 最后,我用十分钟打这些字,不求你能有所收获,毕竟三观不是我的几十个字就能改变的。但是鉴于你我三观不合,我选择 Block 你。只希望这段话能给以后看到的 V 友们一些帮助。欢迎友善的讨论。 |
37
alixali 2020-10-17 12:50:12 +08:00 via iPad
你这只是想得到一个公式,,为什么不百度一下呢?
|
38
yanqiyu 2020-10-17 15:07:38 +08:00 via Android
这问题很复杂,我需要小明的健康状况以及健康状况-三年死亡率的大数据,计算小明在 2017~2020 年之间会不会暴毙
|
39
winglight2016 2020-10-17 16:21:03 +08:00
哈哈,lz 在程序员论坛问这个问题,得到了无情嘲弄,虽然值得同情,不过,如果问题质量也可以打分的话,10 分满分,我给你 1 分,奖励你的勇气。
|