मैंने वास्तविक मूल्यों और प्रतिगामी मूल्य की तुलना करने के लिए अपने डेटाफ़्रेम में एक नया कॉलम बनाने के लिए नीचे यह कोड बनाया है:

b = dfSemoga.loc[:, ['DoB','AA','logtime']]
y = dfSemoga.loc[:,'logCO2'].values.reshape(len(dfSemoga)+1,1)
lr = LinearRegression().fit(b,y)

z = lr.coef_[0,0]
j = lr.coef_[0,1]
k = lr.coef_[0,2]
c = lr.intercept_[0]

for i in range (0,len(dfSemoga)):
    dfSemoga.loc[i,'EF CO2 Predict'] = (c + dfSemoga.loc[i,'DoB']*z  + 
                                        dfSemoga.loc[i,'logtime']*k + dfSemoga.loc[i, 'AA']*j) 

इसलिए, मैं मूल रूप से तीन चर वाले कॉलम को वापस लेता हूं: 1) AA, 2) लॉगटाइम, और 3)< /strong> DoB. लेकिन इस कोड में, dfSemoga['EF CO2 Predict'] नामक एक नए कॉलम में रिग्रेस्ड वैल्यू प्राप्त करने के लिए, मैं मैन्युअल रूप से गुणांक असाइन करता हूं, जैसा कि लूप के लिए दिखाया गया है।

क्या कोई फैंसी वन-लाइनर कोड है जिसे मैं अपने काम को और अधिक कुशल बनाने के लिए लिख सकता हूं?

-1
el-cheapo 19 सितंबर 2021, 06:34

1 उत्तर

सबसे बढ़िया उत्तर

नमूना डेटा के बिना मैं पुष्टि नहीं कर सकता लेकिन आपको बस करने में सक्षम होना चाहिए

dfSemoga["EF CO2 Predict"] = c + (z * dfSemoga["DoB"]) + (k * dfSemoga["logtime"]) + (j * dfSemoga["AA"])

डेमो:

In [4]: df
Out[4]:
   a  b
0  0  0
1  0  8
2  7  6
3  3  1
4  3  8
5  6  6
6  4  8
7  2  7
8  3  8
9  8  1

In [5]: df["c"] = 3 + 0.5 * df["a"] - 6 * df["b"]

In [6]: df
Out[6]:
   a  b     c
0  0  0   3.0
1  0  8 -45.0
2  7  6 -29.5
3  3  1  -1.5
4  3  8 -43.5
5  6  6 -30.0
6  4  8 -43.0
7  2  7 -38.0
8  3  8 -43.5
9  8  1   1.0
2
ddejohn 19 सितंबर 2021, 07:05