#python #pandas #numpy #linear-regression #statsmodels
#питон #pandas #numpy #линейная регрессия #статсмодели
Вопрос:
temp=values(times,l1dl,l1il,llcl,llcs,branchl,dtlbl,dtlbs,itlbl,cycles)
objects.append(temp)
class values:
def __init__(self,timestamp,l1dl,l1il,llcl,llcs,branchl,dTLBl,dTLBs,iTLBl,cycles):
self.timestamp=timestamp
self.l1dl=l1dl
self.l1il=l1il
self.llcl=llcl
self.llcs=llcs
self.branchl=branchl
self.dTLBl=dTLBl
self.dTLBs=dTLBs
self.iTLBl=iTLBl
# self.instrn=instrn
self.cycles=cycles
def as_dict(self):
return{'timestamp':self.timestamp,'l1dl':self.l1dl,'l1il':self.l1il,'llcl':self.llcl,'llcs':self.llcs,'branchl':self.branchl,'dTLBl':self.dTLBl,'dTLBs':self.dTLBs,'iTLBl':self.iTLBl,'cycles':self.cycles}
df=pd.DataFrame([x.as_dict() for x in objects])
#print(df)
print(df.describe())
X=df[['l1dl','l1il','llcl','llcs','branchl','dTLBl','dTLBs','iTLBl']]
Y=df[['cycles']]
#with statsmodel
X1,Y1=np.array(X),np.array(Y)
*X1 = sm.add_constant(X1)*
#print(X1)
model = sm.OLS(Y1, X1)
results=model.fit()
print(results.summary())
Я пытаюсь выполнить множественную линейную регрессию для системного счетчика производительности, используя statsmodel вместо sklearn, потому что в sklearn нет опции сводки отчета, я должен распечатать всю статистику по отдельности. Но с помощью result.summary()
i можно собрать всю статистику вместе.
Я проанализировал данные из файла .txt в столбцы, и все данные представлены в str
формате.
когда я выступаю X1,Y1=np.array(X),np.array(Y) X1 = sm.add_constant(X1)
, я получаю TypeError: unsupported operand type(s) for -: 'str' and 'str'
.Я думаю, что sm.add_constant(x) требует, чтобы x было постоянным, а не строковым. Не могли бы вы , пожалуйста , помочь мне ?
Комментарии:
1. вы можете просто передать фрейм данных для регрессии
model = sm.OLS(Y, X)
2. X и y должны быть числовыми, а не строками. Если строки имеют числовые значения, вы можете преобразовать их с помощью pandas. Если строки являются категориальными переменными, то проще использовать интерфейс формулы, который преобразует строки в некоторую числовую кодировку или фиктивные переменные.