我有一个使用LinearRegression处理的DataFrame。如果我直接进行,如下所示,我可以显示模型的详细信息:
String message = "Alice fell into the rabbit hole";
int x = 130;
int y = 90;
Letter[] letters;
void setup() {
size(260, 200);
letters = new Letter[message.length()];
textSize (random(10, 20));
for (int i = 0; i < message.length(); i++) {
letters[i] = new Letter(x, y, message.charAt(i));
//x += textWidth(message.charAt(i));
}
}
void draw() {
background(255);
for (int i = 0; i < letters.length; i++) {
letters[i].display();
letters[i].shake();
}
}
class Letter {
char letter;
float x, y;
Letter (float x, float y, char letter) {
this.x = x;
this.y = y;
this.letter = letter;
}
void display() {
fill(0);
textAlign(CENTER, CENTER);
text(letter, x, y);
}
void shake() {
x += random(-2, 2);
y += random(-2, 2);
}
}
但是,如果我在管道中使用它(如下面的简化示例),
val lr = new LinearRegression()
val lrModel = lr.fit(df)
lrModel: org.apache.spark.ml.regression.LinearRegressionModel = linReg_b22a7bb88404
println(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")
Coefficients: [0.9705748115939526] Intercept: 0.31041486689532866
然后我收到以下错误。
val pipeline = new Pipeline().setStages(Array(lr))
val lrModel = pipeline.fit(df)
我理解它意味着什么(显然我有一个不同的类,因为管道),但不知道如何到达真正的底层模型。
答案 0 :(得分:5)
LinearRegressionModel
应位于stages
内,其索引与其对应的LinearRegression
完全相同。
import org.apache.spark.ml.regression.LinearRegressionModel
lrModel.stages(0).asInstanceOf[LinearRegressionModel]