0
我是新来斯卡拉,我想实现一个回归model.So最初我加载如下csv文件:如何在scala中设置逻辑回归的数据?
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferSchema", "true")
.load("D:/sample.txt")
的文件是如下:
P,P,A,A,A,P,NB
N,N,A,A,A,N,NB
A,A,A,A,A,A,NB
P,P,P,P,P,P,NB
N,N,P,P,P,N,NB
A,A,P,P,P,A,NB
P,P,A,P,P,P,NB
P,P,P,A,A,P,NB
P,P,A,P,A,P,NB
P,P,A,A,P,P,NB
P,P,P,P,A,P,NB
P,P,P,A,P,P,NB
N,N,A,P,P,N,NB
N,N,P,A,A,N,NB
N,N,A,P,A,N,NB
N,N,A,P,A,N,NB
N,N,A,A,P,N,NB
N,N,P,P,A,N,NB
N,N,P,A,P,N,NB
A,A,A,P,P,A,NB
A,A,P,A,A,A,NB
A,A,A,P,A,A,NB
A,A,A,A,P,A,NB
A,A,P,P,A,A,NB
A,A,P,A,P,A,NB
P,N,A,A,A,P,NB
N,P,A,A,A,N,NB
P,N,A,A,A,N,NB
P,N,P,P,P,P,NB
N,P,P,P,P,N,NB
然后我想
val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.3)
.setElasticNetParam(0.8)
.setFeaturesCol("Feature")
.setLabelCol("Label")
然后,我通过以下拟合模型:
通过下面的代码训练模型3210val lrModel = lr.fit(df)
println(lrModel.coefficients +"are the coefficients")
println(lrModel.interceptVector+"are the intercerpt vactor")
println(lrModel.summary +"is summary")
但它没有打印结果。
任何帮助表示赞赏。
如果我用这个lrModel不能产生任何系数,即决处决或任意其它things.Could请您解释一下为什么会这样 – Ricky
星火ML只能取数值作为输入。由于您的预测变量列包含分类值(P,N,A,...),因此您需要先将它们转换为数值。使用'StringIndexer'或'OneHotEncoder'来完成它并将结果列名传递给'VectorAssembler'输入。请参阅:https://spark.apache.org/docs/latest/ml-features.html#stringindexer和https://spark.apache.org/docs/latest/ml-features.html#onehotencoder。我希望你很清楚。 – vdep