1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| SparkSession spark = SparkSession.builder().appName("ml test") .master("local[*]") .getOrCreate(); List<Row> data = Arrays.asList( RowFactory.create(0.0, "I love spark spark spark"), RowFactory.create(1.0, "I love java java is my life"), RowFactory.create(2.0, "I love C++ C++ is the best") ); StructType schema = new StructType(new StructField[]{ new StructField("label", DataTypes.DoubleType, false, Metadata.empty()), new StructField("sentence", DataTypes.StringType, false, Metadata.empty()) }); Dataset<Row> sentenceData = spark.createDataFrame(data, schema); sentenceData.show();
Tokenizer tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words"); Dataset<Row> wordsData = tokenizer.transform(sentenceData); wordsData.show();
int numFeatures = 20; HashingTF hashingTF = new HashingTF().setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(numFeatures); Dataset<Row> featurizedData = hashingTF.transform(wordsData); featurizedData.show();
IDF idf = new IDF().setInputCol("rawFeatures").setOutputCol("features"); IDFModel idfModel = idf.fit(featurizedData);
Dataset<Row> rescaledData = idfModel.transform(featurizedData); rescaledData.show();
+-----+--------------------+ |label| sentence| +-----+--------------------+ | 0.0|I love spark spar...| | 1.0|I love java java ...| | 2.0|I love C++ C++ is...| +-----+--------------------+
+-----+--------------------+--------------------+ |label| sentence| words| +-----+--------------------+--------------------+ | 0.0|I love spark spar...|[i, love, spark, ...| | 1.0|I love java java ...|[i, love, java, j...| | 2.0|I love C++ C++ is...|[i, love, c++, c+...|
#rawFeatures:hash桶数、词hash索引、词频率 +-----+--------------------+--------------------+--------------------+ |label| sentence| words| rawFeatures| +-----+--------------------+--------------------+--------------------+ | 0.0|I love spark spar...|[i, love, spark, ...|(20,[0,5,9],[1.0,...| | 1.0|I love java java ...|[i, love, java, j...|(20,[0,1,7,9,16,1...| | 2.0|I love C++ C++ is...|[i, love, c++, c+...|(20,[0,1,3,9,10,1...| +-----+--------------------+--------------------+--------------------+
+-----+--------------------+--------------------+--------------------+--------------------+ |label| sentence| words| rawFeatures| features| +-----+--------------------+--------------------+--------------------+--------------------+ | 0.0|I love spark spar...|[i, love, spark, ...|(20,[0,5,9],[1.0,...|(20,[0,5,9],[0.0,...| | 1.0|I love java java ...|[i, love, java, j...|(20,[0,1,7,9,16,1...|(20,[0,1,7,9,16,1...| | 2.0|I love C++ C++ is...|[i, love, c++, c+...|(20,[0,1,3,9,10,1...|(20,[0,1,3,9,10,1...| +-----+--------------------+--------------------+--------------------+--------------------+
|