從docs,我沒有看到任何東西,真的會允許這種。但是,你可以嘗試定義這樣一個類:
class RFClassifierWithData:
def __init__(self):
self.clf = RandomForestClassifier()
def fit(self, train_X, train_y):
self.train_X = train_X
self.train_y = train_y
self.clf.fit(self.train_X, self.train_y)
想出來:
>>> model = RFClassifierWithData()
>>> model.fit(train_X, train_y)
>>> model.train_X
array([[0, 1, 0],
[1, 1, 1],
[0, 1, 1]])
>>> model.train_y
array([1, 0, 1])
,你仍然可以訪問擬合分類:
>>> model.clf
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
oob_score=False, random_state=None, verbose=0,
warm_start=False)
請注意,這可能不是做到這一點是最安全或最穩健的方式,但它應該給你一個開始的好地方。您可能希望使傳遞給此類中的__init__
的參數與基類RandomForestClassifier
類中的參數相等。
編輯:
我仍然認爲這是一個有效的選擇,即使你想從一個醃分類數據:
from sklearn.externals import joblib
joblib.dump(model, 'model.pkl')
same_model = joblib.load('model.pkl')
這一切都仍然存在:
In [19]: same_model.train_X
Out[19]:
array([[0, 1, 0],
[1, 1, 1],
[0, 1, 1]])
same_model.train_y
Out[20]: array([1, 0, 1])
In [21]: same_model.clf
Out[21]:
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
oob_score=False, random_state=None, verbose=0,
warm_start=False)
感謝您的回覆!在我需要用自己的分類器製作的情況下,我以前使用過您的建議。不幸的是,它不適用於我目前的問題。我需要從一些舊的醃製估計器中檢索數據。 – Dan
保存數據將是非常浪費..(我的意思是,如果它是作爲默認行爲完成) – user2717954
嗯,我不認爲有一種方法來從舊的醃製估計器中檢索數據,但在未來我所做的上面提供的滿足您提供的非常簡單的基礎案例。請參閱上文,瞭解如何輕鬆地使用'sklearn.externals.joblib'來完成此類工作。 – blacksite