Как мне построить взвешенную регрессию в Python, если у меня есть столбец весов и отдельный столбец для зависимых и незаPython

Программы на Python
Anonymous
Как мне построить взвешенную регрессию в Python, если у меня есть столбец весов и отдельный столбец для зависимых и неза

Сообщение Anonymous »

У меня есть прекрасно работающая регрессионная модель, в которой зависимые и независимые переменные анализируют фреймы данных. Я хочу добавить к нему веса в формате % и добавить значения в новый столбец.
Как мне создать новую модель регрессии и уравнение для каждой независимой записи с имеющимися у меня весами назначены им в отдельном фрейме данных?

df = pd.read_excel('Weighted Test.xlsx')
grouped = df.groupby('sc')
sc = []
region = []
equations = []
m_value = []
c_value = []
df['Avg_actual_cube'].fillna(0, inplace=True)
df['Actual_TPH'].fillna(0, inplace=True)
df['Weight'].fillna(0, inplace=True)
grouped.head()

Выход:
sc Region Week of balance_day Year of balance_day Actual_TPH Avg_actual_cube Weight

0 ABQ5 Западная неделя 53 2023 г. 122.443157 0,490000 0,1
1 ABQ5 Западная неделя 36 2023 г. 96.074478 0.445714 0,2
2 ABQ5 Западная неделя 22 2024 г. 87.164843 10000 0,3
Если я определяю веса в отдельном фрейме данных и запускаю регрессию, это выдает ошибку. Может кто-нибудь подтвердить, что мне не хватает?
sample_weight=df['Weight']

for group_name, group_data in grouped:
X = group_data\['Avg_actual_cube'\].values.reshape(-1, 1)
y = group_data\['Actual_TPH'\].values
weighted_model = LinearRegression()
model.fit(X, y,sample_weight)
sc.append(group_name)
region.append(group_data['Region'].values[0])
equations.append('TPH = {:.2f}cube+ {:.2f}'.format(model.coef_[0], model.intercept_))
m_value.append(model.coef_[0])
c_value.append(model.intercept_)`

Output Error:
ValueError Traceback (most recent call last)
Input In [14], in ()
3 y = group_data['Actual_TPH'].values
4 weighted_model = LinearRegression()
----> 5 model.fit(X, y,sample_weight)
7 sc.append(group_name)
8 region.append(group_data['Region'].values[0])

File ~\Anaconda3\lib\site-packages\sklearn\linear_model\_base.py:667, in LinearRegression.fit(self, X, y, sample_weight)
662 X, y = self._validate_data(
663 X, y, accept_sparse=accept_sparse, y_numeric=True, multi_output=True
664 )
666 if sample_weight is not None:
--> 667 sample_weight = _check_sample_weight(sample_weight, X, dtype=X.dtype)
669 X, y, X_offset, y_offset, X_scale = self._preprocess_data(
670 X,
671 y,
(...)
676 return_mean=True,
677 )
679 if sample_weight is not None:
680 # Sample weight can be implemented via a simple rescaling.

File ~\Anaconda3\lib\site-packages\sklearn\utils\validation.py:1565, in _check_sample_weight(sample_weight, X, dtype, copy)
1562 raise ValueError("Sample weights must be 1D array or scalar")
1564 if sample_weight.shape != (n_samples,):
-> 1565 raise ValueError(
1566 "sample_weight.shape == {}, expected {}!".format(
1567 sample_weight.shape, (n_samples,)
1568 )
1569 )
1571 return sample_weight

ValueError: sample_weight.shape == (5967,), expected (52,)!


Подробнее здесь: https://stackoverflow.com/questions/786 ... -and-separ

Вернуться в «Python»