小编Mer*_*ozo的帖子

计算SVM损失函数的梯度

我正在尝试实现SVM损失函数及其渐变.我找到了一些实现这两个的示例项目,但是在计算渐变时我无法弄清楚它们如何使用loss函数.

这是损失函数的公式: 在此输入图像描述

我无法理解的是,在计算渐变时如何使用损失函数的结果?

示例项目按如下方式计算渐变:

for i in xrange(num_train):
    scores = X[i].dot(W)
    correct_class_score = scores[y[i]]
    for j in xrange(num_classes):
      if j == y[i]:
        continue
      margin = scores[j] - correct_class_score + 1 # note delta = 1
      if margin > 0:
        loss += margin
        dW[:,j] += X[i]
        dW[:,y[i]] -= X[i] 
Run Code Online (Sandbox Code Playgroud)

dW用于梯度结果.X是训练数据的数组.但是我不明白损失函数的导数是如何产生这个代码的.

python gradient machine-learning svm

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

如何删除具有太多NULL值的行?

我想对我的数据进行一些预处理,我想删除稀疏的行(对于某个阈值).

例如,我有一个包含10个功能的数据帧表,我有一个8空值的行,然后我想删除它.

我发现了一些相关的主题,但我无法找到任何有用的信息.

stackoverflow.com/questions/3473778/count-number-of-nulls-in-a-row

上面的链接中的示例对我不起作用,因为我想自动执行此预处理.我不能写列名并做相应的事情.

那么无论如何在没有使用带有scala的Apache Spark中的列名来执行此删除操作?

scala dataframe apache-spark apache-spark-sql

5
推荐指数
2
解决办法
7307
查看次数

在 Spark StringIndexer 中处理 NULL 值

我有一个包含一些分类字符串列的数据集,我想用双精度类型表示它们。我使用 StringIndexer 进行此转换并且它有效,但是当我在另一个具有 NULL 值的数据集中尝试它时,它给出了java.lang.NullPointerException错误并且不起作用。

为了更好地理解这里是我的代码:

for(col <- cols){
    out_name = col ++ "_"
    var indexer = new StringIndexer().setInputCol(col).setOutputCol(out_name)
    var indexed = indexer.fit(df).transform(df)
    df = (indexed.withColumn(col, indexed(out_name))).drop(out_name)
}
Run Code Online (Sandbox Code Playgroud)

那么如何使用 StringIndexer 解决这个 NULL 数据问题呢?

或者是否有更好的解决方案将具有 NULL 值的字符串类型的分类数据转换为 double?

scala categorical-data apache-spark apache-spark-ml

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