Как лучше всего вычислять глобальную частоту списка элементов с точным порядком в Python в нескольких кадрах данных pandPython

Программы на Python
Anonymous
Как лучше всего вычислять глобальную частоту списка элементов с точным порядком в Python в нескольких кадрах данных pand

Сообщение Anonymous »

Предположим, у меня есть следующая ферма данных df1, соответствующая пользователю user1:

Код: Выделить всё

+-------------------+-------+--------+-------+-------+----------+----------------+
|      Models       |  MAE  |  MSE   | RMSE  | MAPE  | R² score |  Runtime [ms]  |
+-------------------+-------+--------+-------+-------+----------+----------------+
| LinearRegression  | 4.906 | 27.784 | 5.271 | 0.405 |  -6.917  | 0:00:43.387145 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|   Random Forest   | 2.739 | 10.239 |  3.2  | 0.231 |  -1.917  | 0:28:11.761681 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|      XGBoost      | 2.826 | 10.898 | 3.301 | 0.234 |  -2.105  | 0:03:58.883474 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|   MLPRegressor    | 5.234 | 30.924 | 5.561 | 0.43  |  -7.812  | 0:01:44.252276 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|        SVR        | 5.061 | 29.301 | 5.413 | 0.417 |  -7.349  | 0:04:52.754769 |
+-------------------+-------+--------+-------+-------+----------+----------------+
| CatBoostRegressor | 2.454 | 8.823  | 2.97  | 0.201 |  -1.514  | 0:19:36.925169 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|   LGBMRegressor   | 2.76  | 10.204 | 3.194 | 0.231 |  -1.907  | 0:04:51.223103 |
+-------------------+-------+--------+-------+-------+----------+----------------+
У меня есть следующая ферма данных df2, соответствующая пользователю2:

Код: Выделить всё

+-------------------+-------+--------+-------+-------+----------+----------------+
|      Models       |  MAE  |  MSE   | RMSE  | MAPE  | R² score |  Runtime [ms]  |
+-------------------+-------+--------+-------+-------+----------+----------------+
| LinearRegression  | 4.575 | 24.809 | 4.981 | 0.377 |  -6.079  | 0:00:45.055854 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|   Random Forest   | 2.345 | 8.065  | 2.84  | 0.199 |  -1.301  | 0:10:55.468473 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|      XGBoost      | 2.129 | 7.217  | 2.686 | 0.179 |  -1.059  | 0:01:01.575033 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|   MLPRegressor    | 4.414 | 23.477 | 4.845 | 0.363 |  -5.699  | 0:00:31.231719 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|        SVR        | 4.353 | 22.826 | 4.778 | 0.357 |  -5.513  | 0:02:12.258870 |
+-------------------+-------+--------+-------+-------+----------+----------------+
| CatBoostRegressor | 2.281 | 7.671  | 2.77  | 0.189 |  -1.189  | 0:08:16.526615 |
+-------------------+-------+--------+-------+-------+----------+----------------+
|   LGBMRegressor   | 2.511 |  9.18  | 3.03  | 0.212 |  -1.619  | 0:15:25.084937 |
+-------------------+-------+--------+-------+-------+----------+----------------+
Предположим, у меня есть больше ферм данных df1000, соответствующих пользователю user1000.
Постановка задачи: Какие модели являются наиболее популярными в мире?
Я хочу ранжировать результат «Модели» (отсортированный) по определенному столбцу (например, MAE) ) и возвращаем частоту топ-моделей по всем dfs ( до df1000). так что это не то, чего я могу легко достичь, используя:

Код: Выделить всё

df["category"].value_counts()
нас интересует вычисление абсолютных\относительных частот в итоговой ранжированной таблице ожидаемого результата.
поэтому определенно мне нужно преобразовать и добавить список имен отсортированных моделей, которые бы быть списком строк.
Возможные этапы преобразования или агрегирования, насколько я понимаю:
  • возьмите каждый df и создайте список отсортированных названий моделей на основе желаемого столбца или показателя:

    Код: Выделить всё

    ['model2','model7', 'model6', 'model5', 'model4', 'model3', 'model1' ]
  • включение имен пользователей в окончательный преобразованный фрейм данных также может быть полезным (однако я не упомянул об этом в следующей таблице в ожидаемом выводе).
  • вычисление абсолютных\относительных частот и возврат в виде счетчиков и freq(%) в итоговой таблице
Ожидаемый результат:

Код: Выделить всё

+-------------------+-------------------------------------------------------+--------+---------+
|      Rank         |  MAE                                                  |counts  |freq(%)  |
+-------------------+-------------------------------------------------------+--------+---------+
| Top models(sorted)| ["CatBoostRegressor","RandomForest","LGBMRegressor",
"XGBoost","LinearRegression","SVR","MLPRegressor"]   | 70     |   65%   |
| Top models(sorted)| ["LGBMRegressor","CatBoostRegressor","RandomForest",
"XGBoost","LinearRegression","SVR","MLPRegressor"]   | 20     |   12%   |
....
+-------------------+-------------------------------------------------------+--------+---------+
Я также подумал, может быть, я могу использовать методы обработки естественного языка (NLP), называемые TF-IDF, для решения этой проблемы, используя:

Код: Выделить всё

# import required module
from sklearn.feature_extraction.text import TfidfVectorizer
Потенциально похожие сообщения, которые я проверил:
  • Как вычислить гистограмму (таблица частот) для одной серии?
  • Подсчитайте частоту появления значения в столбце фрейма данных.
  • Эффективный способ получить частоту элементов в столбец списков pandas
  • Рассчитать частоту появления элемента в списке
  • Получить частоту отдельных элементов в списке для каждой строки столбца в dataframe
  • подсчитать частоту элементов в списке списков в Python
  • Какова лучшая альтернатива использованию списков в качестве элементов в кадре данных pandas?
  • Какая лучшая альтернатива использованию списков в качестве элементов в кадре данных pandas?
  • Какая лучшая альтернатива использованию списков в качестве элементов в кадре данных pandas?
  • li>
    pandas — создать фрейм данных с количеством и частотой элементов
  • Python: рассчитать PMF для списка в фрейме данных Pandas
  • График частоты кадра данных Pandas
  • python и pandas – Как рассчитать частоту при условиях в столбцах в DataFrame?


Подробнее здесь: https://stackoverflow.com/questions/787 ... ments-with

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