我有一个由数字组成的三元组的n百维列表的大量数据,主要是整数。
[(50,100,0.5),(20,35,1.0),.....]
[(70,80,0.3),(30,45,2.0),......]
....
我正在研究 sklearn 来编写一个简单的生成模型,该模型可以从这些数据中学习模式,并生成一个可能的三元组列表,但我的背景相当薄弱,没有它,文档很难遵循。
是否有一个示例 sklearn 代码可以完成类似的工作,我可以看看?
我同意这个问题可能更适合数据科学或统计网站,但我会试
一试。首先,我假设您的数据位于pandas
数据帧中;这对于scikit-learn
和其他 Python 包都很方便。
我会首先可视化数据。由于您只有三维,因此三维散点图可能很有用。例如,请参阅此处。
绘制数据的另一种有用方法是使用成对图。seaborn
包使这变得非常容易。看这里。配对图非常有用,因为它们显示了每个变量/特征的分布,以及特征对之间的相关性。
此时,创建生成模型取决于图告诉您的内容。例如,如果所有变量都彼此独立,那么您只需要独立估计每个变量的pdf(例如,使用核密度估计,这也是在seaborn
中实现的),然后通过分别从三个分布中的每一个中提取值并将这些值组合到单个元组中来生成新样本。
如果变量不是独立的,那么任务就会变得更加复杂,并且可能需要在统计网站上单独发布。例如,您的样本可以从不同的聚类生成,可能重叠,在这种情况下,混合模型之类的东西可能会很有用。
下面是一个正是这样做的小代码示例(判别模型):
import numpy as np
from sklearn.linear_model import LinearRegression
#generate random numpy array of the size 10,3
X_train = np.random.random((10,3))
y_train = np.random.random((10,3))
X_test = np.random.random((10,3))
#define the regression
clf = LinearRegression()
#fit & predict (predict returns numpy array of the same dimensions)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
否则,这里有更多示例:
http://scikit-learn.org/stable/auto_examples/index.html
生成模型将是sklearn.mixture.GaussianMix(仅在0.18版本中有效)