Я работаю над проектом Java, используя Smile 4.4.0. Я пытаюсь загрузить CSV с заголовками с помощью Smile.io.read.csv. < /P>
фрагмент кода: < /p>
import smile.data.DataFrame;
import smile.io.Read;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
public class CsvHeaderCheck {
public static void main(String[] args) throws IOException {
File csvFile = new File("survey.csv"); // use your original CSV
// Read CSV
DataFrame df = Read.csv(csvFile.toPath());
// Print column names detected by SMILE
System.out.println("CSV loaded successfully. Rows: " + df.nrow() + ", Columns: " + df.ncol());
System.out.println("Detected column names: " + Arrays.toString(df.names()));
}
}
< /code>
Начало моего файла CSV:
Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Partyaffiliation
Расширение программ социального обеспечения, строгих законов о оружии и фонах, ...
снижение государственного вмешательства, сильная защита права второго изменения, ... < /p>
снижение государственного вмешательства, сильная защита второго поправления, ... p>
снижение государственного вмешательства, сильная защита второго поправления, ... p>
снижение государственного вмешательства, сильная защита второго поправления, ... p>
снижение государственного вмешательства, сильная защита во втором /> Улыбка должна обнаружить первую строку в качестве заголовков столбцов (Q1, Q2,…, Partyaffiliation).
Что на самом деле происходит, Smile автоматически переименовает столбцы: < /p>
CSV loaded successfully. Rows: 29, Columns: 11
Headers: V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11
< /code>
Из -за этого мой нижестоящий код не удается, когда я пытаюсь получить доступ к Partyaffiliation: < /p>
Error with MachineLearningModel: Target column 'PartyAffiliation' not found in CSV!
java.io.IOException: Target column 'PartyAffiliation' not found in CSV!
< /code>
Позже я также получаю: < /p>
Error with MachineLearningModel: Cannot invoke "java.lang.Integer.intValue()"
because the return value of "java.util.Map.get(Object)" is null
java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()"
because the return value of "java.util.Map.get(Object)" is null
at smile.data.type.StructType.indexOf(StructType.java:193)
at smile.data.DataFrame.column(DataFrame.java:206)
at org.example.MachineLearningModel.loadAndTrain(MachineLearningModel.java:42)
Debug Logs:
File exists: true
File size: 12038
CSV loaded successfully. Rows: 29, Columns: 11
Headers: V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11
< /code>
build.gradle:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.github.haifengl:smile-core:4.4.0'
implementation 'com.github.haifengl:smile-io:4.4.0'
}
< /code>
Как я могу получить улыбку 4.4.0, чтобы использовать мою первую строку в качестве заголовков столбцов вместо автоматического именования их как v1 ... v11?
или, альтернативно, как я могу вручную назначить строку заголовка от CSV, так что моя целевая колонка (PartyAffiliation)? Vscode).
Печать первой строки файла RAW - он содержит PartyAffiliation.
с использованием string.trim () на заголовках (без эффекта).
посмотрел на документы улыбки, но не видел очевидный заголовок = истинный параметр для read.csv в 4.4.0.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... -v1-v11-in
Smile 4.4.0 Read.csv Не распознавая мою строку заголовка, столбцы отображаются как v1… v11 вместо моих настоящих имен ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение