Warum sollte die LM-Prognosefunktion in R eine Zeile zu meiner Ausgabe hinzufügen

stimmen
0

Ich versuche, die vorhersagen Funktion in R zu verwenden, basierend eines grundlegenden linearen Modells. Mein Test-Set hat 1459 Werte, aber wenn ich die Verwendung vorhersagen funktioniert es 1460 schafft habe ich versucht, die nationalen Agenturen aus dem Test-Set zu entfernen und sogar versucht, sie zu halten, aber nicht wissen, wo dieser Wert herkommt.

Jede Hilfe wäre sehr geschätzt. Vielen Dank!

MODEL <- lm(train$SalePrice ~ train$LotArea * train$GarageArea * 
factor(train$FullBath) * train$YearBuilt * factor(train$OverallQual))



test_final <-read.csv(/Users/ERIC/Documents/HOUSING_PRICES/test.csv, 
        header = TRUE)


    na.omit(test_final)


    prediction <- data.frame(predict(MODEL, test_final))


    Warning messages:
    1: 'newdata' had 1459 rows but variables found have 1460 rows 
    2: In predict.lm(MODEL, test_final) :
    prediction from a rank-deficient fit may be misleading

Daten über: https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

Veröffentlicht am 07/11/2018 um 23:54
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

Zuerst wird eine Notiz: Sie müssen die Ausgabe neu zuzuweisen , na.omit()um von fehlenden Werten loszuwerden.

Siehe hier:

df <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA))
df
  x  y
1 1  0
2 2 10
3 3 NA
na.omit(df)
  x  y
1 1  0
2 2 10
df
  x  y
1 1  0
2 2 10
3 3 NA

Wie Sie sehen können, bis der letzte Aufruf dfzeigte Ihnen die erste Version , einschließlich der NAs. Sie müssen mit neu zuzuweisen df <- na.omit(df).


Die aktuelle Ausgabe:

Wie durch @ 42 in den Kommentaren darauf hingewiesen, mit Hilfe von Formeln korrekt dieses Problem beheben, dh Sie diese Fehlermeldung nicht mehr haben werden. Sie werden jedoch eine andere haben. Zunächst möchte ich Ihnen zeigen:

#read in the data
testdf <- read.csv("test.csv")
train <- read.csv("train.csv")

# run initial model, and run model as suggested by 42
model_original <- lm(train$SalePrice ~ train$LotArea * train$GarageArea * factor(train$FullBath) * train$YearBuilt * factor(train$OverallQual))

mod_42 <- lm(SalePrice ~ LotArea * GarageArea * factor(FullBath) * YearBuilt * factor(OverallQual), data = train)

Lassen Sie uns nun die Prognosen laufen:

prediction <- data.frame(predict(model_original, testdf))
Warning messages:
1: 'newdata' had 1459 rows but variables found have 1460 rows 
2: In predict.lm(model_original, testdf) :
  prediction from a rank-deficient fit may be misleading

Dies führte zu den gleichen Fehler wie Sie haben. Lassen Sie uns nun die Vorhersagen mit dem zweiten Ansatz aus:

prediction <- data.frame(predict(mod_42, testdf))
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
  factor factor(FullBath) has new levels 4

Beachten Sie, dass die Fehlermeldung jetzt anders ist, und zeigt auf ein interessanteres Problem.

Beantwortet am 08/11/2018 um 00:08
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more