【发布时间】:2016-11-11 04:27:43
【问题描述】:
我有一些来自英特尔处理器的数据,我用不同类型的图形呈现这些数据。
而且我还想做一个回归,它显示一个指数函数,我可以在我的数据中的最大年份(最大值:2014)之后“预测”晶体管数量。例如:2019、2021、2030..
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv('data.csv', delimiter=',')
X = np.array(data['Year'], dtype=int)
y = np.array(data['Count'], dtype=int)
print(X)
print(y)
plt.plot(X, y, 'bo')
plt.xlabel('Year')
plt.ylabel('Transistor Count')
plt.yscale('log')
plt.grid(True)
plt.show()
这段代码显示:
Transistor count (Image)
我尝试使用 Scikit-Learning 创建回归,但我总是以错误的指数函数设置告终。而且我也尝试了一些在线回归工具,但它们并不那么准确。
我还查看了Sklearn Cheat Sheet 以找到要使用的正确分类器。但我对 Sklearn 还不是很熟悉。我自己尝试了 2 天,在 Google 和 StackOverflow 上进行了大量搜索,但没有发现任何适用于我的数据的内容。
[1971 1972 1974 1976 1978 1982 1985 1989 1993 1995 1997 1999 2000 2002 2006
2008 2010 2011 2012 2013 2014 2014]
[ 2300 3500 4400 6500 29000 134000
275000 1180235 3100000 5500000 7500000 9500000
42000000 220000000 291000000 731000000 1170000000 2270000000
3100000000 1860000000 4310000000 5560000000]
这是两个数组里面的数据。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
data = pd.read_csv('data.csv', delimiter=',')
X = np.array(data['Year'], dtype=int)
y = np.array(data['Count'], dtype=int)
X = np.reshape(X, (X.size, 1))
clf = SVC()
clf.fit(X, y)
for i in range(1971, 2030, 1):
print(i,':', clf.predict([[i]]))
并且使用此代码,程序将预测 2014 年之后的数据与 2014 年的值相同。( (2015-2030).value === 2014.value )
我不确定是否可以向分类器添加一些设置,或者我只是没有足够的机器学习知识来执行此操作。
【问题讨论】:
-
我认为您尝试做的事情可能并不总是产生正确的结果,因为回归是一种插值模型,不应该用于外推。参考:stats.stackexchange.com/questions/219579/…
标签: python scikit-learn regression