我有一个数据集,该数据集具有Strip Id的,position和更多属性。我需要建立我的模型以找出gauage_condition(0-不弯曲),1(弯曲/损坏)。
| finish_mill_id | fm_exit-length | fm_exit_temp | position | grade | guage_condition | |----------------|----------------|--------------|----------|-------|-----------------| | EY123 | 1220.35 | 2300 | 1 | NY | 0 | | EY123 | 1220.35 | 2350 | 2 | NY | 0 | | EY123 | 1220.35 | 2357 | 3 | NY | 0 | | EY123 | 1220.35 | 2365 | 500 | NY | 0 | | EY223 | 1386 | 2312 | 1 | EY | 1 | | EY223 | 1387 | 2311 | 3 | EY | 1 | | EY223 | 1388.28 | 2364 | 100 | EY | 1 | | EY223 | 1390 | 2377 | 500 | EY | 1 |
位置范围从0到500,我具有所有属性(输入长度,温度等),这些属性在每个位置都不同 我使用相同的功能构建了模型
stringIndexer = StringIndexer(inputCol="grade", outputCol="gradeIndex")
model = stringIndexer.fit(df)
indexed = model.transform(df)
encoder =OneHotEncoder(inputCol="gradeIndex", outputCol="grade_vector")
encoded_df = encoder.transform(indexed)
cols=encoded_df.columns
cols.remove("gauge_condition")
cols.remove("grade")
cols.remove("finish_mill_id")
cols.remove("cold_mill_id")
encoded_df.drop("finish_mill_id")
encoded_df.drop("cold_mill_id")
encoded_df=assembler.transform(encoded_df)
encoded_df.select("features").show(truncate=False)
standardscaler=StandardScaler().setInputCol("features").setOutputCol("Scaled_features")
encoded_df=standardscaler.fit(encoded_df).transform(encoded_df)
我的模特在这里
gbt = GBTClassifier(labelCol="gauge_condition",
featuresCol='Scaled_features',maxIter=100)
model=gbt.fit(train)
gbt_predict_train=model.transform(train)
gbt_predict_test=model.transform(test)
但是我想要的是我需要在带状水平上进行预测,但是在这里我可以在每个位置进行预测。我也无法将位置用作一种热门编码,并且我尝试将所有属性旋转并表示为位置的函数,最终出现在2000列中,这毫无意义
如果我尝试通过预测后的快速而肮脏的方式进行分组,该如何进行评估。如果有更好的方法,请提出建议