我现在使用scikit learn和python几天,特别是KernelDensity.一旦模型拟合,我想评估新点的概率.方法得分()是为此而做的,但显然不起作用,因为当我输入数组时,条目1数字是输出.我使用score_samples()但它很慢.
我认为这个分数不起作用,但我没有技能可以帮助它.如果您有任何想法,请告诉我
我正在尝试使用XGboost实现自定义目标函数(在R中,但我也使用python,因此任何有关python的反馈也很好).
我创建了一个函数,吐出渐变和粗麻布(它正常工作),但当我尝试运行xgb.train然后它不起作用.然后我决定按照这个特定的顺序打印每一轮的预测,渐变和粗麻布.这是输出(只要我让它运行就会不断重复):
[1] 0 0 0 0 0 0 0 0 0 0
[1] -0.034106908 -0.017049339 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.004256162 -0.034106908 -0.008520554
[1] 0.003836107 0.004272548 0.003836107 0.003836107 0.003836107 0.003836107 0.003836107 0.004408935 0.003836107 0.004381658
[0]训练得分:0 val-score:0
[1] 0 0 0 0 0 0 0 0 0 0
[1] -0.034106908 -0.017049339 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.004256162 -0.034106908 -0.008520554
[1] 0.003836107 0.004272548 0.003836107 0.003836107 0.003836107 0.003836107 0.003836107 0.004408935 0.003836107 0.004381658
[1]训练得分:0 val-score:0
我们可以看到,即使渐变和粗麻布似乎没问题,每一轮的预测也不会改变!我不明白为什么会这样.如果有人遇到同样的问题或有想法请分享.
我使用的代码如下,但我认为它不是很有用:
reg <- xgb.train(data = xgb.DMatrix(data.matrix(train[1:10,feature.names]),label=train$Response[1:10]),
nrounds …
Run Code Online (Sandbox Code Playgroud) 我试图在一个巨大的文件上执行非常简单的计算,例如计算某些列的标签数量或其他列的平均值和标准偏差.该文件太大,无法容纳在内存中,我目前正在每行处理它:
unique = {key: [] for key in categorical_keys}
means = {key: 0.0 for key in numerical_keys}
sds = {key: 0.0 for key in numerical_keys}
with open('input/train.csv', 'r') as read_file:
reader = csv.DictReader(read_file, delimiter=',', quotechar='|')
for i, row in enumerate(reader):
for key, value in row.iteritems():
if key in categorical_keys:
if row[key] not in unique[key]:
unique[key].extend([value])
elif key in numerical_keys:
if value:
means[key] = (means[key]*i + float(value))/(i+1)
if i > 1:
sds[key] = (sds[key]*(i-1) + (float(value)-means[key])**2)/i
Run Code Online (Sandbox Code Playgroud)
现在这似乎太慢了,我想知道是否可以更快地处理它可以适合内存的块.会更快吗?如果是,为什么?
谢谢你的帮助.