小编Sta*_*ham的帖子

xgb.train和xgb.XGBRegressor(或xgb.XGBClassifier)有什么区别?

我已经知道" xgboost.XGBRegressor是XGBoost的Scikit-Learn Wrapper界面."

但他们还有其他区别吗?

python regression machine-learning scikit-learn xgboost

12
推荐指数
3
解决办法
5314
查看次数

Xgboost plot_tree错误:ValueError:Booster必须是Booster实例

我是xgboost的新手,我想可视化我的xgboost模型。

这是我的代码,该代码来自教程,可能没有错误。

from numpy import loadtxt
from xgboost import XGBClassifier
from xgboost import plot_tree
import matplotlib.pyplot as plt

dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",")
X = dataset[:,0:8]
y = dataset[:,8]
model = XGBClassifier()
model.fit(X, y)
plot_tree(model)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我使用UBuntu并安装了graphviz,运行此代码将获得

Traceback (most recent call last):
File "a.py", line 15, in <module>
    plot_tree(model)
  File "/home/statham/anaconda2/lib/python2.7/site-packages/xgboost/plotting.py", line 214, in plot_tree
    g = to_graphviz(booster, num_trees=num_trees, rankdir=rankdir, **kwargs)
  File "/home/statham/anaconda2/lib/python2.7/site-packages/xgboost/plotting.py", line 160, in to_graphviz
    raise ValueError('booster must be Booster instance')
ValueError: booster must be Booster instance
Run Code Online (Sandbox Code Playgroud)

我知道关键是我的模型不是Booster实例,我搜索了Google却没有找到答案,有人可以告诉我如何将我的模型转换为Booster实例吗?提前致谢。

python matplotlib graphviz xgboost

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

为什么pytorch DataLoader在numpy数组和列表上的行为不同?

唯一的区别是传递给的DataLoader的参数之一是输入“numpy.array”,另一种是在类型“列表中”,但给人的DataLoader完全不同的结果。

您可以使用以下代码来重现它:

from torch.utils.data import DataLoader,Dataset
import numpy as np

class my_dataset(Dataset):
    def __init__(self,data,label):
        self.data=data
        self.label=label          
    def __getitem__(self, index):
        return self.data[index],self.label[index]
    def __len__(self):
        return len(self.data)

train_data=[[1,2,3],[5,6,7],[11,12,13],[15,16,17]]
train_label=[-1,-2,-11,-12]

########################### Look at here:    

test=DataLoader(dataset=my_dataset(np.array(train_data),train_label),batch_size=2)
for i in test:
    print ("numpy data:")
    print (i)
    break


test=DataLoader(dataset=my_dataset(train_data,train_label),batch_size=2)
for i in test:
    print ("list data:")
    print (i)
    break
Run Code Online (Sandbox Code Playgroud)

结果是:

numpy data:
[tensor([[1, 2, 3],
        [5, 6, 7]]), tensor([-1, -2])]
list data:
[[tensor([1, 5]), tensor([2, 6]), tensor([3, 7])], tensor([-1, -2])]  
Run Code Online (Sandbox Code Playgroud)

python iterator numpy list pytorch

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

pytorch代码中的KL散度与公式有何关系?

在 VAE 教程中,两个正态分布的 kl 散度定义为: 在此输入图像描述

而在很多代码中,例如hereherehere,代码实现为:

 KL_loss = -0.5 * torch.sum(1 + logv - mean.pow(2) - logv.exp())
Run Code Online (Sandbox Code Playgroud)

或者

def latent_loss(z_mean, z_stddev):
    mean_sq = z_mean * z_mean
    stddev_sq = z_stddev * z_stddev
    return 0.5 * torch.mean(mean_sq + stddev_sq - torch.log(stddev_sq) - 1)
Run Code Online (Sandbox Code Playgroud)

它们有何关系?为什么代码中没有“tr”或“.transpose()”?

python autoencoder pytorch loss-function

3
推荐指数
1
解决办法
2542
查看次数

很多在python生成器中的一行

我无法理解在这样的一个生成器中使用多个"for"的代码,我搜索了Google并没有找到任何答案:

print [j for i in [[1,2],[4,6]] for j in i ]
# will print [1, 2, 4, 6]

print [j for j in i for i in [[1,2],[4,6]] ]
# will print [4, 4, 6, 6]
Run Code Online (Sandbox Code Playgroud)

有什么不同?

如何解释这样的代码?

python for-loop list generator

2
推荐指数
1
解决办法
435
查看次数

为什么append方法在列表中返回None?

我知道我可以使用“ append()”将元素添加到列表中,但是为什么赋值返回None?

>>> a=[1,2,3]
>>> a.append(4)
>>> print a 
[1, 2, 3, 4]
>>> a=a.append(5)
>>> print a 
None
>>>
Run Code Online (Sandbox Code Playgroud)

python list append

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