我有一些使用scikit-learn的DecisionTreeClassifier的旧代码.我想根据这个分类器制作部分图.
我到目前为止看到的所有示例(例如http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.partial_dependence.plot_partial_dependence.html)都使用"GradientBoostingRegressor"作为分类器.
我的问题是,是否可以为其他分类器制作部分图?(例如,DecisionTreeClassifier).我试过以下代码:
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble.partial_dependence import plot_partial_dependence
from sklearn.datasets import make_friedman1
X, y = make_friedman1()
clf = DecisionTreeClassifier(max_features='auto').fit(X,y)
fig, axs = plot_partial_dependence(clf, X, [0, (0, 1)])
Run Code Online (Sandbox Code Playgroud)
它不起作用.
ValueError: gbrt has to be an instance of BaseGradientBoosting
Run Code Online (Sandbox Code Playgroud)
我在互联网上发现了一些评论(Quora):
部分依赖图根本不依赖于分类器的特定选择.如果您交换随机林分类器,则用于梯度提升示例的部分依赖关系图模块可以正常工作.
但是,我仍然不知道它是如何工作的.
同样对于R,似乎我可以为randomForest包制作部分图.然而,我并不完全确定随机森林是如何实现的,在R手册中,作者Andy Liaw引用了参考文献"Friedman,J.(2001).贪婪函数近似:梯度增强机,Ann.of Stat."
这是否意味着我必须使用梯度增强来获得部分图?
任何帮助表示赞赏.非常感谢!
我无法解决这个简单的问题,我在这里寻求帮助......我有如下DataFrame,我想在每组"a"中选择前两行
df = pd.DataFrame({'a':pd.Series(['NewYork','NewYork','NewYork','Washington','Washington','Texas','Texas','Texas','Texas']), 'b': np.arange(9)})
df
Out[152]:
a b
0 NewYork 0
1 NewYork 1
2 NewYork 2
3 Washington 3
4 Washington 4
5 Texas 5
6 Texas 6
7 Texas 7
8 Texas 8
Run Code Online (Sandbox Code Playgroud)
也就是说,我想要一个输出如下:
a b
0 NewYork 0
1 NewYork 1
2 Washington 3
3 Washington 4
4 Texas 5
5 Texas 6
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助.
说我有一个清单:
a = [3, 5, 1, 1, 3, 2, 4, 1, 6, 4, 8]
Run Code Online (Sandbox Code Playgroud)
和一个子列表:
b = [5, 2, 6, 8]
Run Code Online (Sandbox Code Playgroud)
我想获取bin pd.qcut(a,2)并计算列表b的每个bin中的值的数量.那是
In[84]: pd.qcut(a,2)
Out[84]:
Categorical:
[[1, 3], (3, 8], [1, 3], [1, 3], [1, 3], [1, 3], (3, 8], [1, 3], (3, 8], (3, 8], (3, 8]]
Levels (2): Index(['[1, 3]', '(3, 8]'], dtype=object)
Run Code Online (Sandbox Code Playgroud)
现在我知道箱子是:[1,3]和(3,8),我想知道列表"b"的每个箱子中有多少值.当箱子的数量为时,我可以手动完成很小,但是当垃圾箱数量很大时,最好的方法是什么?
我正在使用 sklean 14.1 并且我希望返回 partial_plot 值而不是使用plot_partial_dependence返回一个数字,所以我想也许我可以使用partial_dependence,但这里有一些麻烦。
似乎partial_dependence只需要两个功能,而我只想要一个功能的值。
当我修改 scikit-learn 网站提供的示例代码时:(将 target_feature = (1,2) 更改为 target_feature = (1)),它抱怨:
*** ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)
这是代码:
from sklearn.cross_validation import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble.partial_dependence import plot_partial_dependence
from sklearn.ensemble.partial_dependence import partial_dependence
from sklearn.datasets.california_housing import fetch_california_housing
cal_housing = fetch_california_housing()
X_train, X_test, y_train, y_test = train_test_split(cal_housing.data,
cal_housing.target,test_size=0.2,
random_state=1)
names = cal_housing.feature_names
clf = GradientBoostingRegressor(n_estimators=100, max_depth=4,
learning_rate=0.1, loss='huber',random_state=1)
clf.fit(X_train, y_train)
target_feature = (1)
pdp, (x_axis, …Run Code Online (Sandbox Code Playgroud)