小编val*_*ner的帖子

理解文本特征提取python scikit-learn中的TfidfVectorizer

阅读scikit-learn中文本特征提取的文档,我不确定TfidfVectorizer(可能是其他矢量化器)可用的不同参数如何影响结果.

以下是我不确定它们是如何工作的论据:

TfidfVectorizer(stop_words='english',  ngram_range=(1, 2), max_df=0.5, min_df=20, use_idf=True)
Run Code Online (Sandbox Code Playgroud)

文档清楚地说明了stop_words/max_df的使用(两者都有相似的效果,可以使用一个而不是另一个).但是,我不确定这些选项是否应与ngrams一起使用.首先发生/处理哪一个,ngrams或stop_words?为什么?根据我的实验,首先删除停用词,但是ngrams的目的是提取短语等.我不确定这个序列的效果(Stops删除然后ngramed).

第二,将max_df/min_df参数与use_idf参数一起使用是否有意义?这些类似的目的不是?

python scikit-learn

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

python - sklearn Latent Dirichlet Allocation Transform v.Fittransform

我正在使用sklearn的NMF和LDA子模块来分析未标记的文本.我阅读了文档,但我不确定这些模块中的转换函数(NMF和LDA)是否与R的主题模型中的后验函数相同(请参阅预测新数据的LDA主题).基本上,我正在寻找一种功能,它允许我使用训练集数据训练的模型预测测试集中的主题.我预测了整个数据集的主题.然后我将数据分成训练和测试集,在训练集上训练模型并使用该模型转换测试集.虽然预计我不会得到相同的结果,但比较两个运行主题并不能保证转换函数与R的包具有相同的功能.非常感谢您的回复.

谢谢

python scikit-learn

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

在Spark数据集<Row>中使用custome UDF withColumn; java.lang.String无法强制转换为org.apache.spark.sql.Row

我有一个包含许多字段的JSON文件.我在java中使用spark的Dataset读取文件.

  • Spark版本2.2.0

  • java jdk 1.8.0_121

下面是代码.

SparkSession spark = SparkSession
              .builder()
              .appName("Java Spark SQL basic example")
              .config("spark.some.config.option", "some-value")
              .master("local")
              .getOrCreate();

Dataset<Row> df = spark.read().json("jsonfile.json");
Run Code Online (Sandbox Code Playgroud)

我想使用带有自定义UDF的withColumn函数来添加新列.

UDF1 someudf = new UDF1<Row,String>(){
        public String call(Row fin) throws Exception{
            String some_str = fin.getAs("String");
            return some_str;
        }
    };
spark.udf().register( "some_udf", someudf, DataTypes.StringType );
df.withColumn( "procs", callUDF( "some_udf", col("columnx") ) ).show();
Run Code Online (Sandbox Code Playgroud)

运行上面的代码时出现转换错误.java.lang.String无法强制转换为org.apache.spark.sql.Row

问题:

1 - 读取行数据集是唯一的选择吗?我可以将df转换为df的字符串.但我无法选择字段.

2 - 尝试但未能定义用户定义的数据类型.我无法使用此自定义UDDatatype注册UDF.我需要用户定义的数据类型吗?

3 - 和主要问题,我如何从String转换为Row?

部分日志复制如下:

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.spark.sql.Row
    at Risks.readcsv$1.call(readcsv.java:1)
    at …
Run Code Online (Sandbox Code Playgroud)

java user-defined-functions apache-spark apache-spark-sql apache-spark-dataset

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