При воспроизведении вашего кода я обнаружил, что ошибка возникает из-за попытки подгонки модели линейной регрессии к набору функций, включающему строки. Этот ответ дает вам несколько вариантов того, что делать. Я бы предложил использовать X_train, X_test = pd.get_dummies(X_train.Country), pd.get_dummies(X_test.Country)
для быстрого кодирования ваших стран после выполнения train_test_split () для сохранения баланса классов, который вы ищете.
Список MSDN:
Dictionary <,>
List <>
SortedList <,>
(edit: неправильная ссылка; вот общая версия ) SortedDictionary <,> [тысяча двести шестьдесят один] и т.д.. Например:
Общий список SortedList (TKey, TValue)
класс - это двоичное дерево поиска с
O (log n) поиск, где n -
количество элементов в словаре.
В этом он похож на
SortedDictionary (TKey, TValue) универсальный
класс. У этих двух классов похожие
объектные модели, и обе имеют O (log n)
поиск. Где два класса
отличается использованием памяти и скоростью
вставка и удаление:
SortedList (TKey, TValue) использует меньше
памяти, чем SortedDictionary (TKey,
TValue).
SortedDictionary (TKey, TValue) имеет
более быстрая установка и удаление
операции с несортированными данными, O (log n)
в отличие от O (n) для
SortedList (TKey, TValue).
Если список заполняется сразу
из отсортированных данных, SortedList (TKey,
TValue) быстрее, чем
SortedDictionary (TKey, TValue).
Не существует такого понятия, как «сложность классов коллекций». Скорее, разные операции с этими коллекциями имеют разную сложность. Например, добавление элемента к Dictionary
...
... приближается к операции O (1) . Если емкость должна быть увеличена для размещения нового элемента, этот метод становится операцией O (n) , где
n
равноCount
.
При извлечении элемент из Dictionary
...
... приближается к операции O (1).
Эта страница суммирует некоторые временные сложности для различных типов коллекций с Java, хотя они должны быть точно такими же для .NET.
Я взял таблицы из этого страницу и изменили / расширили их для .NET framework. См. Также страницы MSDN для SortedDictionary и SortedList , на которых подробно описаны временные сложности, необходимые для различных операций.
Type of Search/Collection Types Complexity Comments Linear search Array/ArrayList/LinkedList O(N) Unsorted data. Binary search sorted Array/ArrayList/ O(log N) Requires sorted data. Search Hashtable/Dictionary<T> O(1) Uses hash function. Binary search SortedDictionary/SortedKey O(log N) Sorting is automated.
Operation Array/ArrayList LinkedList SortedDictionary SortedList Access back O(1) O(1) O(log N) O(log N) Access front O(1) O(1) N.A. N.A. Access middle O(1) O(N) N.A. N.A. Insert at back O(1) O(1) O(log N) O(N) Insert at front O(N) O(1) N.A. N.A. Insert in middle O(N) O(1) N.A. N.A.
Удаление должно иметь то же сложность вставки для связанной коллекции.
SortedList имеет несколько примечательных особенностей для вставки и извлечения.
Вставка (метод добавления):
Этот метод является операцией O (n) для несортированные данные, где n - количество. это операция O (log n), если новый элемент добавляется в конец список. Если вставка вызывает изменение размера, операция - O (n).
Получение (свойство элемента):
Получение значения этого свойства - операция O (log n), где n - Граф. Установка свойства - это O (log n) операция, если ключ уже в SortedList <(Of <(TKey, TValue>)>). Если ключ не в list, установка свойства - O (n) операция для несортированных данных, или O (журнал n) если новый элемент добавлен в конец списка. Если вставка вызывает resize, операция O (n).
Обратите внимание, что ArrayList
эквивалентен List
с точки зрения сложности всех операций.