Γιατί η λειτουργία LM Πρόβλεψη στον τομέα της Ε προσθέσετε μια γραμμή για την έξοδο μου

ψήφοι
0

Είμαι προσπαθεί να χρησιμοποιήσει τη λειτουργία προβλέψει το R βάση ενός βασικού γραμμικού μοντέλου. σετ δοκιμής μου έχει 1459 τιμές, αλλά όταν χρησιμοποιώ το προβλέψει λειτουργεί αυτό δημιουργεί 1460. Δοκίμασα την αφαίρεση του ΕΓ από το σύνολο των δοκιμών και μάλιστα προσπάθησε διατήρησή τους σε, αλλά δεν ξέρετε από πού αυτή η τιμή προέρχεται από.

Οποιαδήποτε βοήθεια θα εκτιμηθεί ιδιαίτερα. Ευχαριστώ!

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

Δεδομένα μέσω: https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

Δημοσιεύθηκε 07/11/2018 στις 23:54
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Κατ 'αρχάς, μια σημείωση: θα πρέπει να αναθέσει την παραγωγή του na.omit()για να απαλλαγούμε από τις τιμές που λείπουν.

Δες εδώ:

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

Όπως μπορείτε να δείτε, η τελευταία κλήση για να dfσας έδειξε την αρχική έκδοση, συμπεριλαμβανομένων των NAs. Θα πρέπει να εκχωρήσετε εκ νέου χρήση df <- na.omit(df).


Το πραγματικό ζήτημα:

Όπως επισημαίνεται από @ 42 στα σχόλια, χρησιμοποιώντας τους τύπους σωστά θα επιλύσει αυτό το ζήτημα, δηλαδή δεν θα έχετε αυτό το μήνυμα λάθους πια. Θα έχετε όμως ένα διαφορετικό. Κατ 'αρχάς, επιτρέψτε μου να σας δείξω:

#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)

Τώρα, ας τρέχουμε προβλέψεις:

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

Αυτό οδήγησε στο ίδιο λάθος όπως έχετε. Τώρα, ας τρέξει τις προβλέψεις χρησιμοποιώντας την δεύτερη προσέγγιση:

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

Σημειώστε ότι το μήνυμα λάθους είναι διαφορετικά τώρα, και τα σημεία σε ένα πιο ενδιαφέρον πρόβλημα.

Απαντήθηκε 08/11/2018 στις 00:08
πηγή χρήστη

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