小编use*_*752的帖子

我可以在scikit-learn(和R)中为DecisionTreeClassifier制作部分图

我有一些使用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."

这是否意味着我必须使用梯度增强来获得部分图?

任何帮助表示赞赏.非常感谢!

python r scikit-learn

9
推荐指数
1
解决办法
2118
查看次数

熊猫:选择每组中的前几行

我无法解决这个简单的问题,我在这里寻求帮助......我有如下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)

非常感谢您的帮助.

python pandas

6
推荐指数
2
解决办法
4116
查看次数

pandas基于另一个列表的qcut列出一个列表

说我有一个清单:

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"的每个箱子中有多少值.当箱子的数量为时,我可以手动完成很小,但是当垃圾箱数量很大时,最好的方法是什么?

python binning pandas

6
推荐指数
1
解决办法
2235
查看次数

Scikit-learn: partial_dependence 是否只需要 2 个特征?

我正在使用 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)

python scikit-learn

5
推荐指数
1
解决办法
873
查看次数

标签 统计

python ×4

pandas ×2

scikit-learn ×2

binning ×1

r ×1