Compare commits
79 Commits
arutunyan_
...
kurmyza_pa
| Author | SHA1 | Date | |
|---|---|---|---|
| a9e95110c1 | |||
| 71cad406c2 | |||
| a076fd78ae | |||
| 124f682c8b | |||
| 8834f99ecf | |||
| dd0d45ef93 | |||
| c7060e6719 | |||
|
|
23bc64c816 | ||
|
|
be1b6a74ae | ||
|
|
32821e551a | ||
|
|
10799cb639 | ||
|
|
0f61b37f8b | ||
|
|
3a68c16a44 | ||
| d575910860 | |||
| 5894881f24 | |||
| 92ec657bcd | |||
| 346241253f | |||
| 65b47c7d0e | |||
| f7af263316 | |||
| c45de91019 | |||
| 4fad5585c1 | |||
| c9d485daca | |||
| 200d8dee7e | |||
| 4e1980e638 | |||
| a43eb72079 | |||
|
|
464b437c69 | ||
| 0b422e70f9 | |||
|
|
716e7b7ee6 | ||
| 145b7336b8 | |||
| bea977d84c | |||
| ad5ed23a4c | |||
|
|
226dd4efe9 | ||
|
|
c0217ad0d3 | ||
|
|
caab9f2f8b | ||
|
|
d2580ffa9e | ||
| a98d914e7c | |||
| a4985e4d76 | |||
| 3bb04b059b | |||
| a9e1145b0e | |||
| f44ba0d0a2 | |||
| ccf3bfb561 | |||
| 4f349a1d49 | |||
| f8075403a3 | |||
| c20695af79 | |||
| 33dba33cc4 | |||
| 41e0e8598f | |||
| 53a25975f9 | |||
| 5e00a83340 | |||
| 2239c15572 | |||
| 07333219ed | |||
| 5891b16f9d | |||
| 81874f0f84 | |||
| ce6105bee6 | |||
| ca3b734361 | |||
| 2f1d67dc8f | |||
| b9ec1fd145 | |||
| f84f7abaa9 | |||
| 5445cef67d | |||
| ad60c6221e | |||
|
|
8942f824d5 | ||
| 106e02f76b | |||
| 81479f5221 | |||
|
|
abd650a641 | ||
| 15936c6996 | |||
|
|
c03b5e3a94 | ||
| 16db685d3d | |||
| 84fe84a15a | |||
| 7ccd400417 | |||
|
|
c15ab42cd4 | ||
| 5eb35fe26d | |||
|
|
ef485bf514 | ||
|
|
3a868e5545 | ||
| fc2fe74052 | |||
| 35826f2461 | |||
| 7781a379c3 | |||
| adca415462 | |||
| 72507eb3af | |||
| 516c7aea4f | |||
|
|
f11ba4d365 |
6
.idea/IIS_2023_1.iml
generated
@@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.8 (venv)" jdkType="Python SDK" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.9 (PyCharmProjects)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
7
.idea/discord.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="ASK" />
|
||||
<option name="description" value="" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/misc.xml
generated
@@ -1,4 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (venv)" project-jdk-type="Python SDK" />
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.9 (PyCharmProjects)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (PyCharmProjects)" project-jdk-type="Python SDK" />
|
||||
<component name="PyCharmProfessionalAdvertiser">
|
||||
<option name="shown" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
72
.idea/workspace.xml
generated
@@ -1,7 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="0ceb130e-88da-4a20-aad6-17f5ab4226ac" name="Changes" comment="" />
|
||||
<list default="true" id="0ceb130e-88da-4a20-aad6-17f5ab4226ac" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/IIS_2023_1.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/IIS_2023_1.iml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
@@ -15,30 +22,50 @@
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="main" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"associatedIndex": 2
|
||||
}</component>
|
||||
<component name="ProjectId" id="2VlZqWiOX68aCf0o2y0AtYJWURS" />
|
||||
<component name="ProjectLevelVcsManager">
|
||||
<ConfirmationsSetting value="1" id="Add" />
|
||||
</component>
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"last_opened_file_path": "D:/ulstukek/Course4/IIS/labs"
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"WebServerToolWindowFactoryState": "false",
|
||||
"git-widget-placeholder": "senkin__alexander__lab__1",
|
||||
"last_opened_file_path": "D:/ulstukek/Course4/IIS/labs",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}]]></component>
|
||||
}</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\ulstukek\Course4\IIS\IISLabs\IIS_2023_1\zavrazhnova_svetlana_lab_3" />
|
||||
<recent name="D:\ulstukek\Course4\IIS\IISLabs\IIS_2023_1\zavrazhnova_svetlana_lab_1" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.zavrazhnova_svetlana_lab3_2">
|
||||
<component name="RunManager">
|
||||
<configuration name="zavrazhnova_svetlana_lab3_2" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="IIS_2023_1" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
@@ -51,6 +78,7 @@
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/zavrazhnova_svetlana_lab_3/zavrazhnova_svetlana_lab3_2.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
@@ -72,6 +100,7 @@
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/zavrazhnova_svetlana_lab_2/zavrazhnova_svetlana_lab_2.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
@@ -93,6 +122,7 @@
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/zavrazhnova_svetlana_lab_3/zavrazhnova_svetlana_lab_3_1.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
@@ -104,9 +134,11 @@
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
@@ -118,18 +150,38 @@
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1695412818437</updated>
|
||||
<workItem from="1697735437405" duration="1706000" />
|
||||
<workItem from="1697740229646" duration="3802000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
<State>
|
||||
<option name="FILTERS">
|
||||
<map>
|
||||
<entry key="branch">
|
||||
<value>
|
||||
<list>
|
||||
<option value="HEAD" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</State>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||
<SUITE FILE_PATH="coverage/PyCharmProjects$senkin_alexander_lab_1.coverage" NAME="senkin_alexander_lab_1 Coverage Results" MODIFIED="1697744262965" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/senkin_alexander_lab_1" />
|
||||
</component>
|
||||
</project>
|
||||
47
abanin_daniil_lab_1/README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
## Лабораторная работа №1
|
||||
|
||||
### Работа с типовыми наборами данных и различными моделями
|
||||
|
||||
### ПИбд-41 Абанин Даниил
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
|
||||
* установить python, numpy, matplotlib, sklearn
|
||||
* запустить проект (стартовая точка класс lab1)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
* Язык программирования `Python`,
|
||||
* Библиотеки numpy, matplotlib, sklearn
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает лабораторная работа:
|
||||
|
||||
* Программа гененерирует данные с make_moonsmake_moons (noise=0.3, random_state=rs)
|
||||
* Сравнивает три типа моделей: инейная, полиномиальная, гребневая полиномиальная регрессии
|
||||
|
||||
### Примеры работы:
|
||||
|
||||
#### Результаты:
|
||||
MAE - средняя абсолютная ошибка, измеряет среднюю абсолютную разницу между прогнозируемыми значениями модели и фактическими значениями целевой переменной
|
||||
MSE - средняя квадратическая ошибка, измеряет среднюю квадратичную разницу между прогнозируемыми значениями модели и фактическими значениями целевой переменной
|
||||
|
||||
Чем меньше значения показателей, тем лучше модель справляется с предсказанием
|
||||
|
||||
Линейная регрессия
|
||||
MAE 0.2959889435199454
|
||||
MSE 0.13997968555679302
|
||||
|
||||
Полиномиальная регрессия
|
||||
MAE 0.21662135861071705
|
||||
MSE 0.08198825629271855
|
||||
|
||||
Гребневая полиномиальная регрессия
|
||||
MAE 0.2102788716636562
|
||||
MSE 0.07440133949387796
|
||||
|
||||
Лучший результат показала модель **Гребневая полиномиальная регрессия**
|
||||
|
||||

|
||||

|
||||

|
||||
BIN
abanin_daniil_lab_1/greb_reg.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
66
abanin_daniil_lab_1/lab1.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from matplotlib import pyplot as plt
|
||||
from matplotlib.colors import ListedColormap
|
||||
from sklearn.linear_model import LinearRegression, Ridge
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.pipeline import Pipeline
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.datasets import make_moons
|
||||
from sklearn import metrics
|
||||
|
||||
cm_bright = ListedColormap(['#8B0000', '#FF0000'])
|
||||
cm_bright1 = ListedColormap(['#FF4500', '#FFA500'])
|
||||
|
||||
|
||||
def create_moons():
|
||||
x, y = make_moons(noise=0.3, random_state=0)
|
||||
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=.4, random_state=42)
|
||||
|
||||
linear_regretion(X_train, X_test, y_train, y_test)
|
||||
polynomial_regretion(X_train, X_test, y_train, y_test)
|
||||
ridge_regretion(X_train, X_test, y_train, y_test)
|
||||
|
||||
|
||||
def linear_regretion(x_train, x_test, y_train, y_test):
|
||||
model = LinearRegression().fit(x_train, y_train)
|
||||
y_predict = model.intercept_ + model.coef_ * x_test
|
||||
plt.title('Линейная регрессия')
|
||||
print('Линейная регрессия')
|
||||
plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright)
|
||||
plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, cmap=cm_bright1, alpha=0.7)
|
||||
plt.plot(x_test, y_predict, color='red')
|
||||
print('MAE', metrics.mean_absolute_error(y_test, y_predict[:, 1]))
|
||||
print('MSE', metrics.mean_squared_error(y_test, y_predict[:, 1]))
|
||||
plt.show()
|
||||
|
||||
|
||||
def polynomial_regretion(x_train, x_test, y_train, y_test):
|
||||
polynomial_features = PolynomialFeatures(degree=3)
|
||||
X_polynomial = polynomial_features.fit_transform(x_train, y_train)
|
||||
base_model = LinearRegression()
|
||||
base_model.fit(X_polynomial, y_train)
|
||||
y_predict = base_model.predict(X_polynomial)
|
||||
plt.title('Полиномиальная регрессия')
|
||||
plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright)
|
||||
plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, cmap=cm_bright1, alpha=0.7)
|
||||
plt.plot(x_train, y_predict, color='blue')
|
||||
plt.show()
|
||||
print('Полиномиальная регрессия')
|
||||
print('MAE', metrics.mean_absolute_error(y_train, y_predict))
|
||||
print('MSE', metrics.mean_squared_error(y_train, y_predict))
|
||||
|
||||
|
||||
def ridge_regretion(X_train, X_test, y_train, y_test):
|
||||
model = Pipeline([('poly', PolynomialFeatures(degree=3)), ('ridge', Ridge(alpha=1.0))])
|
||||
model.fit(X_train, y_train)
|
||||
y_predict = model.predict(X_test)
|
||||
plt.title('Гребневая полиномиальная регрессия')
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright1, alpha=0.7)
|
||||
plt.plot(X_test, y_predict, color='blue')
|
||||
plt.show()
|
||||
print('Гребневая полиномиальная регрессия')
|
||||
print('MAE', metrics.mean_absolute_error(y_test, y_predict))
|
||||
print('MSE', metrics.mean_squared_error(y_test, y_predict))
|
||||
|
||||
|
||||
create_moons()
|
||||
BIN
abanin_daniil_lab_1/lin_reg.jpg
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
abanin_daniil_lab_1/pol_reg.jpg
Normal file
|
After Width: | Height: | Size: 63 KiB |
41
abanin_daniil_lab_2/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
## Лабораторная работа №2
|
||||
|
||||
### Ранжирование признаков
|
||||
|
||||
## ПИбд-41 Абанин Даниил
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
|
||||
* установить python, numpy, matplotlib, sklearn
|
||||
* запустить проект (стартовая точка lab2)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
* Язык программирования `Python`, библиотеки numpy, matplotlib, sklearn
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает лабораторная работа:
|
||||
|
||||
* Генерирует данные и обучает такие модели, как: LinearRegression, RandomizedLasso, Recursive Feature Elimination (RFE)
|
||||
* Производиться ранжирование признаков с помощью моделей LinearRegression, RandomizedLasso, Recursive Feature Elimination (RFE)
|
||||
* Отображение получившихся результатов: 4 самых важных признака по среднему значению, значения признаков для каждой модели
|
||||
|
||||
|
||||
### 4 самых важных признака по среднему значению
|
||||
* Параметр - x4, значение - 0.56
|
||||
* Параметр - x1, значение - 0.45
|
||||
* Параметр - x2, значение - 0.33
|
||||
* Параметр - x9, значение - 0.33
|
||||
|
||||
####Linear Regression
|
||||
[('x1', 1.0), ('x4', 0.69), ('x2', 0.61), ('x11', 0.59), ('x3', 0.51), ('x13', 0.48), ('x5', 0.19), ('x12', 0.19), ('x14', 0.12), ('x8', 0.03), ('x6', 0.02), ('x10', 0.01), ('x7', 0.0), ('x9', 0.0)]
|
||||
|
||||
####Recursive Feature Elimination
|
||||
[('x9', 1.0), ('x7', 0.86), ('x10', 0.71), ('x6', 0.57), ('x8', 0.43), ('x14', 0.29), ('x12', 0.14), ('x1', 0.0), ('x2', 0.0), ('x3', 0.0), ('x4', 0.0), ('x5', 0.0), ('x11', 0.0), ('x13', 0.0)]
|
||||
|
||||
####Randomize Lasso
|
||||
[('x4', 1.0), ('x2', 0.37), ('x1', 0.36), ('x5', 0.32), ('x6', 0.02), ('x8', 0.02), ('x3', 0.01), ('x7', 0.0), ('x9', 0.0), ('x10', 0.0), ('x11', 0.0), ('x12', 0.0), ('x13', 0.0), ('x14', 0.0)]
|
||||
|
||||
#### Результаты:
|
||||
|
||||

|
||||
76
abanin_daniil_lab_2/RadomizedLasso.py
Normal file
@@ -0,0 +1,76 @@
|
||||
from sklearn.utils import check_X_y, check_random_state
|
||||
from sklearn.linear_model import Lasso
|
||||
from scipy.sparse import issparse
|
||||
from scipy import sparse
|
||||
|
||||
|
||||
def _rescale_data(x, weights):
|
||||
if issparse(x):
|
||||
size = weights.shape[0]
|
||||
weight_dia = sparse.dia_matrix((1 - weights, 0), (size, size))
|
||||
x_rescaled = x * weight_dia
|
||||
else:
|
||||
x_rescaled = x * (1 - weights)
|
||||
|
||||
return x_rescaled
|
||||
|
||||
|
||||
class RandomizedLasso(Lasso):
|
||||
"""
|
||||
Randomized version of scikit-learns Lasso class.
|
||||
|
||||
Randomized LASSO is a generalization of the LASSO. The LASSO penalises
|
||||
the absolute value of the coefficients with a penalty term proportional
|
||||
to `alpha`, but the randomized LASSO changes the penalty to a randomly
|
||||
chosen value in the range `[alpha, alpha/weakness]`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
weakness : float
|
||||
Weakness value for randomized LASSO. Must be in (0, 1].
|
||||
|
||||
See also
|
||||
--------
|
||||
sklearn.linear_model.LogisticRegression : learns logistic regression models
|
||||
using the same algorithm.
|
||||
"""
|
||||
def __init__(self, weakness=0.5, alpha=1.0, fit_intercept=True,
|
||||
precompute=False, copy_X=True, max_iter=1000,
|
||||
tol=1e-4, warm_start=False, positive=False,
|
||||
random_state=None, selection='cyclic'):
|
||||
self.weakness = weakness
|
||||
super(RandomizedLasso, self).__init__(
|
||||
alpha=alpha, fit_intercept=fit_intercept, precompute=precompute, copy_X=copy_X,
|
||||
max_iter=max_iter, tol=tol, warm_start=warm_start,
|
||||
positive=positive, random_state=random_state,
|
||||
selection=selection)
|
||||
|
||||
def fit(self, X, y):
|
||||
"""Fit the model according to the given training data.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
X : {array-like, sparse matrix}, shape = [n_samples, n_features]
|
||||
The training input samples.
|
||||
|
||||
y : array-like, shape = [n_samples]
|
||||
The target values.
|
||||
"""
|
||||
if not isinstance(self.weakness, float) or not (0.0 < self.weakness <= 1.0):
|
||||
raise ValueError('weakness should be a float in (0, 1], got %s' % self.weakness)
|
||||
|
||||
X, y = check_X_y(X, y, accept_sparse=True)
|
||||
|
||||
n_features = X.shape[1]
|
||||
weakness = 1. - self.weakness
|
||||
random_state = check_random_state(self.random_state)
|
||||
|
||||
weights = weakness * random_state.randint(0, 1 + 1, size=(n_features,))
|
||||
|
||||
# TODO: I am afraid this will do double normalization if set to true
|
||||
#X, y, _, _ = _preprocess_data(X, y, self.fit_intercept, normalize=self.normalize, copy=False,
|
||||
# sample_weight=None, return_mean=False)
|
||||
|
||||
# TODO: Check if this is a problem if it happens before standardization
|
||||
X_rescaled = _rescale_data(X, weights)
|
||||
return super(RandomizedLasso, self).fit(X_rescaled, y)
|
||||
BIN
abanin_daniil_lab_2/__pycache__/RadomizedLasso.cpython-39.pyc
Normal file
81
abanin_daniil_lab_2/lab2.py
Normal file
@@ -0,0 +1,81 @@
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from RadomizedLasso import RandomizedLasso
|
||||
from sklearn.feature_selection import RFE
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import numpy as np
|
||||
|
||||
names = ["x%s" % i for i in range(1, 15)]
|
||||
|
||||
|
||||
def start_point():
|
||||
X,Y = generation_data()
|
||||
# Линейная модель
|
||||
lr = LinearRegression()
|
||||
lr.fit(X, Y)
|
||||
# Рекурсивное сокращение признаков
|
||||
rfe = RFE(lr)
|
||||
rfe.fit(X, Y)
|
||||
# Случайное Лассо
|
||||
randomized_lasso = RandomizedLasso(alpha=.01)
|
||||
randomized_lasso.fit(X, Y)
|
||||
|
||||
ranks = {"Linear Regression": rank_to_dict(lr.coef_), "Recursive Feature Elimination": rank_to_dict(rfe.ranking_),
|
||||
"Randomize Lasso": rank_to_dict(randomized_lasso.coef_)}
|
||||
|
||||
get_estimation(ranks)
|
||||
print_sorted_data(ranks)
|
||||
|
||||
|
||||
def generation_data():
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
Y = (10 * np.sin(np.pi * X[:, 0] * X[:, 1]) + 20 * (X[:, 2] - .5) ** 2 +
|
||||
10 * X[:, 3] + 5 * X[:, 4] ** 5 + np.random.normal(0, 1))
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
return X, Y
|
||||
|
||||
|
||||
def rank_to_dict(ranks):
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
|
||||
def get_estimation(ranks: {}):
|
||||
mean = {}
|
||||
#«Бежим» по списку ranks
|
||||
for key, value in ranks.items():
|
||||
for item in value.items():
|
||||
if(item[0] not in mean):
|
||||
mean[item[0]] = 0
|
||||
mean[item[0]] += item[1]
|
||||
|
||||
for key, value in mean.items():
|
||||
res = value/len(ranks)
|
||||
mean[key] = round(res, 2)
|
||||
|
||||
mean_sorted = sorted(mean.items(), key=lambda item: item[1], reverse=True)
|
||||
print("Средние значения")
|
||||
print(mean_sorted)
|
||||
|
||||
|
||||
print("4 самых важных признака по среднему значению")
|
||||
for item in mean_sorted[:4]:
|
||||
print('Параметр - {0}, значение - {1}'.format(item[0], item[1]))
|
||||
|
||||
|
||||
|
||||
def print_sorted_data(ranks: {}):
|
||||
print()
|
||||
for key, value in ranks.items():
|
||||
ranks[key] = sorted(value.items(), key=lambda item: item[1], reverse=True)
|
||||
for key, value in ranks.items():
|
||||
print(key)
|
||||
print(value)
|
||||
|
||||
|
||||
start_point()
|
||||
BIN
abanin_daniil_lab_2/result.png
Normal file
|
After Width: | Height: | Size: 178 KiB |
27
abanin_daniil_lab_3/README.md
Normal file
@@ -0,0 +1,27 @@
|
||||
## Лабораторная работа №3
|
||||
|
||||
### Деревья решений
|
||||
|
||||
## Cтудент группы ПИбд-41 Абанин Даниил
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
|
||||
* установить python, numpy, matplotlib, sklearn
|
||||
* запустить проект (lab3)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
* Язык программирования `Python`, библиотеки numpy, matplotlib, sklearn
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает лабораторная работа:
|
||||
|
||||
* Выполняет ранжирование признаков для регрессионной модели
|
||||
* По данным "Eligibility Prediction for Loan" решает задачу классификации (с помощью дерева решений), в которой необходимо выявить риски выдачи кредита и определить его статус (выдан или отказ). В качестве исходных данных используются три признака: Credit_History - соответствие кредитной истории стандартам банка, ApplicantIncome - доход заявителя, LoanAmount - сумма кредита.
|
||||
|
||||
### Примеры работы:
|
||||
|
||||
#### Результаты:
|
||||
* Наиболее важным параметром при выдачи кредита оказался доход заявителя - ApplicantIncome, затем LoanAmount - сумма выдаваемого кредита
|
||||
|
||||

|
||||
33
abanin_daniil_lab_3/lab3.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
pd.options.mode.chained_assignment = None
|
||||
|
||||
FILE_PATH = "loan.csv"
|
||||
REQUIRED_COLUMNS = ['Credit_History', 'LoanAmount', 'ApplicantIncome']
|
||||
TARGET_COLUMN = 'Loan_Status'
|
||||
|
||||
|
||||
def print_classifier_info(feature_importance):
|
||||
feature_names = REQUIRED_COLUMNS
|
||||
embarked_score = feature_importance[-3:].sum()
|
||||
scores = np.append(feature_importance[:2], embarked_score)
|
||||
scores = map(lambda score: round(score, 2), scores)
|
||||
print(dict(zip(feature_names, scores)))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
data = pd.read_csv(FILE_PATH)
|
||||
|
||||
X = data[REQUIRED_COLUMNS]
|
||||
y = data[TARGET_COLUMN]
|
||||
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
classifier_tree = DecisionTreeClassifier(random_state=42)
|
||||
classifier_tree.fit(X_train, y_train)
|
||||
|
||||
print_classifier_info(classifier_tree.feature_importances_)
|
||||
print("Оценка качества (задача классификации) - ", classifier_tree.score(X_test, y_test))
|
||||
615
abanin_daniil_lab_3/loan.csv
Normal file
@@ -0,0 +1,615 @@
|
||||
Loan_ID,Gender,Married,Dependents,Education,Self_Employed,ApplicantIncome,CoapplicantIncome,LoanAmount,Loan_Amount_Term,Credit_History,Property_Area,Loan_Status
|
||||
LP001002,Male,No,0,1,No,5849,0.0,360.0,1.0,0,Y,0.0
|
||||
LP001003,Male,Yes,1,1,No,4583,1508.0,128.0,360.0,1,Rural,0.0
|
||||
LP001005,Male,Yes,0,1,Yes,3000,0.0,66.0,360.0,1,Urban,1.0
|
||||
LP001006,Male,Yes,0,0,No,2583,2358.0,120.0,360.0,1,Urban,1.0
|
||||
LP001008,Male,No,0,1,No,6000,0.0,141.0,360.0,1,Urban,1.0
|
||||
LP001011,Male,Yes,2,1,Yes,5417,4196.0,267.0,360.0,1,Urban,1.0
|
||||
LP001013,Male,Yes,0,0,No,2333,1516.0,95.0,360.0,1,Urban,1.0
|
||||
LP001014,Male,Yes,3+,1,No,3036,2504.0,158.0,360.0,0,Semiurban,0.0
|
||||
LP001018,Male,Yes,2,1,No,4006,1526.0,168.0,360.0,1,Urban,1.0
|
||||
LP001020,Male,Yes,1,1,No,12841,10968.0,349.0,360.0,1,Semiurban,0.0
|
||||
LP001024,Male,Yes,2,1,No,3200,700.0,70.0,360.0,1,Urban,1.0
|
||||
LP001027,Male,Yes,2,1,,2500,1840.0,109.0,360.0,1,Urban,1.0
|
||||
LP001028,Male,Yes,2,1,No,3073,8106.0,200.0,360.0,1,Urban,1.0
|
||||
LP001029,Male,No,0,1,No,1853,2840.0,114.0,360.0,1,Rural,0.0
|
||||
LP001030,Male,Yes,2,1,No,1299,1086.0,17.0,120.0,1,Urban,1.0
|
||||
LP001032,Male,No,0,1,No,4950,0.0,125.0,360.0,1,Urban,1.0
|
||||
LP001034,Male,No,1,0,No,3596,0.0,100.0,240.0,0,Urban,1.0
|
||||
LP001036,Female,No,0,1,No,3510,0.0,76.0,360.0,0,Urban,0.0
|
||||
LP001038,Male,Yes,0,0,No,4887,0.0,133.0,360.0,1,Rural,0.0
|
||||
LP001041,Male,Yes,0,1,,2600,3500.0,115.0,,1,Urban,1.0
|
||||
LP001043,Male,Yes,0,0,No,7660,0.0,104.0,360.0,0,Urban,0.0
|
||||
LP001046,Male,Yes,1,1,No,5955,5625.0,315.0,360.0,1,Urban,1.0
|
||||
LP001047,Male,Yes,0,0,No,2600,1911.0,116.0,360.0,0,Semiurban,0.0
|
||||
LP001050,,Yes,2,0,No,3365,1917.0,112.0,360.0,0,Rural,0.0
|
||||
LP001052,Male,Yes,1,1,,3717,2925.0,151.0,360.0,0,Semiurban,0.0
|
||||
LP001066,Male,Yes,0,1,Yes,9560,0.0,191.0,360.0,1,Semiurban,1.0
|
||||
LP001068,Male,Yes,0,1,No,2799,2253.0,122.0,360.0,1,Semiurban,1.0
|
||||
LP001073,Male,Yes,2,0,No,4226,1040.0,110.0,360.0,1,Urban,1.0
|
||||
LP001086,Male,No,0,0,No,1442,0.0,35.0,360.0,1,Urban,0.0
|
||||
LP001087,Female,No,2,1,,3750,2083.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001091,Male,Yes,1,1,,4166,3369.0,201.0,360.0,0,Urban,0.0
|
||||
LP001095,Male,No,0,1,No,3167,0.0,74.0,360.0,1,Urban,0.0
|
||||
LP001097,Male,No,1,1,Yes,4692,0.0,106.0,360.0,1,Rural,0.0
|
||||
LP001098,Male,Yes,0,1,No,3500,1667.0,114.0,360.0,1,Semiurban,1.0
|
||||
LP001100,Male,No,3+,1,No,12500,3000.0,320.0,360.0,1,Rural,0.0
|
||||
LP001106,Male,Yes,0,1,No,2275,2067.0,0.0,360.0,1,Urban,1.0
|
||||
LP001109,Male,Yes,0,1,No,1828,1330.0,100.0,,0,Urban,0.0
|
||||
LP001112,Female,Yes,0,1,No,3667,1459.0,144.0,360.0,1,Semiurban,1.0
|
||||
LP001114,Male,No,0,1,No,4166,7210.0,184.0,360.0,1,Urban,1.0
|
||||
LP001116,Male,No,0,0,No,3748,1668.0,110.0,360.0,1,Semiurban,1.0
|
||||
LP001119,Male,No,0,1,No,3600,0.0,80.0,360.0,1,Urban,0.0
|
||||
LP001120,Male,No,0,1,No,1800,1213.0,47.0,360.0,1,Urban,1.0
|
||||
LP001123,Male,Yes,0,1,No,2400,0.0,75.0,360.0,0,Urban,1.0
|
||||
LP001131,Male,Yes,0,1,No,3941,2336.0,134.0,360.0,1,Semiurban,1.0
|
||||
LP001136,Male,Yes,0,0,Yes,4695,0.0,96.0,,1,Urban,1.0
|
||||
LP001137,Female,No,0,1,No,3410,0.0,88.0,,1,Urban,1.0
|
||||
LP001138,Male,Yes,1,1,No,5649,0.0,44.0,360.0,1,Urban,1.0
|
||||
LP001144,Male,Yes,0,1,No,5821,0.0,144.0,360.0,1,Urban,1.0
|
||||
LP001146,Female,Yes,0,1,No,2645,3440.0,120.0,360.0,0,Urban,0.0
|
||||
LP001151,Female,No,0,1,No,4000,2275.0,144.0,360.0,1,Semiurban,1.0
|
||||
LP001155,Female,Yes,0,0,No,1928,1644.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP001157,Female,No,0,1,No,3086,0.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001164,Female,No,0,1,No,4230,0.0,112.0,360.0,1,Semiurban,0.0
|
||||
LP001179,Male,Yes,2,1,No,4616,0.0,134.0,360.0,1,Urban,0.0
|
||||
LP001186,Female,Yes,1,1,Yes,11500,0.0,286.0,360.0,0,Urban,0.0
|
||||
LP001194,Male,Yes,2,1,No,2708,1167.0,97.0,360.0,1,Semiurban,1.0
|
||||
LP001195,Male,Yes,0,1,No,2132,1591.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP001197,Male,Yes,0,1,No,3366,2200.0,135.0,360.0,1,Rural,0.0
|
||||
LP001198,Male,Yes,1,1,No,8080,2250.0,180.0,360.0,1,Urban,1.0
|
||||
LP001199,Male,Yes,2,0,No,3357,2859.0,144.0,360.0,1,Urban,1.0
|
||||
LP001205,Male,Yes,0,1,No,2500,3796.0,120.0,360.0,1,Urban,1.0
|
||||
LP001206,Male,Yes,3+,1,No,3029,0.0,99.0,360.0,1,Urban,1.0
|
||||
LP001207,Male,Yes,0,0,Yes,2609,3449.0,165.0,180.0,0,Rural,0.0
|
||||
LP001213,Male,Yes,1,1,No,4945,0.0,0.0,360.0,0,Rural,0.0
|
||||
LP001222,Female,No,0,1,No,4166,0.0,116.0,360.0,0,Semiurban,0.0
|
||||
LP001225,Male,Yes,0,1,No,5726,4595.0,258.0,360.0,1,Semiurban,0.0
|
||||
LP001228,Male,No,0,0,No,3200,2254.0,126.0,180.0,0,Urban,0.0
|
||||
LP001233,Male,Yes,1,1,No,10750,0.0,312.0,360.0,1,Urban,1.0
|
||||
LP001238,Male,Yes,3+,0,Yes,7100,0.0,125.0,60.0,1,Urban,1.0
|
||||
LP001241,Female,No,0,1,No,4300,0.0,136.0,360.0,0,Semiurban,0.0
|
||||
LP001243,Male,Yes,0,1,No,3208,3066.0,172.0,360.0,1,Urban,1.0
|
||||
LP001245,Male,Yes,2,0,Yes,1875,1875.0,97.0,360.0,1,Semiurban,1.0
|
||||
LP001248,Male,No,0,1,No,3500,0.0,81.0,300.0,1,Semiurban,1.0
|
||||
LP001250,Male,Yes,3+,0,No,4755,0.0,95.0,,0,Semiurban,0.0
|
||||
LP001253,Male,Yes,3+,1,Yes,5266,1774.0,187.0,360.0,1,Semiurban,1.0
|
||||
LP001255,Male,No,0,1,No,3750,0.0,113.0,480.0,1,Urban,0.0
|
||||
LP001256,Male,No,0,1,No,3750,4750.0,176.0,360.0,1,Urban,0.0
|
||||
LP001259,Male,Yes,1,1,Yes,1000,3022.0,110.0,360.0,1,Urban,0.0
|
||||
LP001263,Male,Yes,3+,1,No,3167,4000.0,180.0,300.0,0,Semiurban,0.0
|
||||
LP001264,Male,Yes,3+,0,Yes,3333,2166.0,130.0,360.0,0,Semiurban,1.0
|
||||
LP001265,Female,No,0,1,No,3846,0.0,111.0,360.0,1,Semiurban,1.0
|
||||
LP001266,Male,Yes,1,1,Yes,2395,0.0,0.0,360.0,1,Semiurban,1.0
|
||||
LP001267,Female,Yes,2,1,No,1378,1881.0,167.0,360.0,1,Urban,0.0
|
||||
LP001273,Male,Yes,0,1,No,6000,2250.0,265.0,360.0,0,Semiurban,0.0
|
||||
LP001275,Male,Yes,1,1,No,3988,0.0,50.0,240.0,1,Urban,1.0
|
||||
LP001279,Male,No,0,1,No,2366,2531.0,136.0,360.0,1,Semiurban,1.0
|
||||
LP001280,Male,Yes,2,0,No,3333,2000.0,99.0,360.0,0,Semiurban,1.0
|
||||
LP001282,Male,Yes,0,1,No,2500,2118.0,104.0,360.0,1,Semiurban,1.0
|
||||
LP001289,Male,No,0,1,No,8566,0.0,210.0,360.0,1,Urban,1.0
|
||||
LP001310,Male,Yes,0,1,No,5695,4167.0,175.0,360.0,1,Semiurban,1.0
|
||||
LP001316,Male,Yes,0,1,No,2958,2900.0,131.0,360.0,1,Semiurban,1.0
|
||||
LP001318,Male,Yes,2,1,No,6250,5654.0,188.0,180.0,1,Semiurban,1.0
|
||||
LP001319,Male,Yes,2,0,No,3273,1820.0,81.0,360.0,1,Urban,1.0
|
||||
LP001322,Male,No,0,1,No,4133,0.0,122.0,360.0,1,Semiurban,1.0
|
||||
LP001325,Male,No,0,0,No,3620,0.0,25.0,120.0,1,Semiurban,1.0
|
||||
LP001326,Male,No,0,1,,6782,0.0,0.0,360.0,0,Urban,0.0
|
||||
LP001327,Female,Yes,0,1,No,2484,2302.0,137.0,360.0,1,Semiurban,1.0
|
||||
LP001333,Male,Yes,0,1,No,1977,997.0,50.0,360.0,1,Semiurban,1.0
|
||||
LP001334,Male,Yes,0,0,No,4188,0.0,115.0,180.0,1,Semiurban,1.0
|
||||
LP001343,Male,Yes,0,1,No,1759,3541.0,131.0,360.0,1,Semiurban,1.0
|
||||
LP001345,Male,Yes,2,0,No,4288,3263.0,133.0,180.0,1,Urban,1.0
|
||||
LP001349,Male,No,0,1,No,4843,3806.0,151.0,360.0,1,Semiurban,1.0
|
||||
LP001350,Male,Yes,,1,No,13650,0.0,0.0,360.0,1,Urban,1.0
|
||||
LP001356,Male,Yes,0,1,No,4652,3583.0,0.0,360.0,1,Semiurban,1.0
|
||||
LP001357,Male,,,1,No,3816,754.0,160.0,360.0,1,Urban,1.0
|
||||
LP001367,Male,Yes,1,1,No,3052,1030.0,100.0,360.0,1,Urban,1.0
|
||||
LP001369,Male,Yes,2,1,No,11417,1126.0,225.0,360.0,1,Urban,1.0
|
||||
LP001370,Male,No,0,0,,7333,0.0,120.0,360.0,1,Rural,0.0
|
||||
LP001379,Male,Yes,2,1,No,3800,3600.0,216.0,360.0,0,Urban,0.0
|
||||
LP001384,Male,Yes,3+,0,No,2071,754.0,94.0,480.0,1,Semiurban,1.0
|
||||
LP001385,Male,No,0,1,No,5316,0.0,136.0,360.0,1,Urban,1.0
|
||||
LP001387,Female,Yes,0,1,,2929,2333.0,139.0,360.0,1,Semiurban,1.0
|
||||
LP001391,Male,Yes,0,0,No,3572,4114.0,152.0,,0,Rural,0.0
|
||||
LP001392,Female,No,1,1,Yes,7451,0.0,0.0,360.0,1,Semiurban,1.0
|
||||
LP001398,Male,No,0,1,,5050,0.0,118.0,360.0,1,Semiurban,1.0
|
||||
LP001401,Male,Yes,1,1,No,14583,0.0,185.0,180.0,1,Rural,1.0
|
||||
LP001404,Female,Yes,0,1,No,3167,2283.0,154.0,360.0,1,Semiurban,1.0
|
||||
LP001405,Male,Yes,1,1,No,2214,1398.0,85.0,360.0,0,Urban,1.0
|
||||
LP001421,Male,Yes,0,1,No,5568,2142.0,175.0,360.0,1,Rural,0.0
|
||||
LP001422,Female,No,0,1,No,10408,0.0,259.0,360.0,1,Urban,1.0
|
||||
LP001426,Male,Yes,,1,No,5667,2667.0,180.0,360.0,1,Rural,1.0
|
||||
LP001430,Female,No,0,1,No,4166,0.0,44.0,360.0,1,Semiurban,1.0
|
||||
LP001431,Female,No,0,1,No,2137,8980.0,137.0,360.0,0,Semiurban,1.0
|
||||
LP001432,Male,Yes,2,1,No,2957,0.0,81.0,360.0,1,Semiurban,1.0
|
||||
LP001439,Male,Yes,0,0,No,4300,2014.0,194.0,360.0,1,Rural,1.0
|
||||
LP001443,Female,No,0,1,No,3692,0.0,93.0,360.0,0,Rural,1.0
|
||||
LP001448,,Yes,3+,1,No,23803,0.0,370.0,360.0,1,Rural,1.0
|
||||
LP001449,Male,No,0,1,No,3865,1640.0,0.0,360.0,1,Rural,1.0
|
||||
LP001451,Male,Yes,1,1,Yes,10513,3850.0,160.0,180.0,0,Urban,0.0
|
||||
LP001465,Male,Yes,0,1,No,6080,2569.0,182.0,360.0,0,Rural,0.0
|
||||
LP001469,Male,No,0,1,Yes,20166,0.0,650.0,480.0,0,Urban,1.0
|
||||
LP001473,Male,No,0,1,No,2014,1929.0,74.0,360.0,1,Urban,1.0
|
||||
LP001478,Male,No,0,1,No,2718,0.0,70.0,360.0,1,Semiurban,1.0
|
||||
LP001482,Male,Yes,0,1,Yes,3459,0.0,25.0,120.0,1,Semiurban,1.0
|
||||
LP001487,Male,No,0,1,No,4895,0.0,102.0,360.0,1,Semiurban,1.0
|
||||
LP001488,Male,Yes,3+,1,No,4000,7750.0,290.0,360.0,1,Semiurban,0.0
|
||||
LP001489,Female,Yes,0,1,No,4583,0.0,84.0,360.0,1,Rural,0.0
|
||||
LP001491,Male,Yes,2,1,Yes,3316,3500.0,88.0,360.0,1,Urban,1.0
|
||||
LP001492,Male,No,0,1,No,14999,0.0,242.0,360.0,0,Semiurban,0.0
|
||||
LP001493,Male,Yes,2,0,No,4200,1430.0,129.0,360.0,1,Rural,0.0
|
||||
LP001497,Male,Yes,2,1,No,5042,2083.0,185.0,360.0,1,Rural,0.0
|
||||
LP001498,Male,No,0,1,No,5417,0.0,168.0,360.0,1,Urban,1.0
|
||||
LP001504,Male,No,0,1,Yes,6950,0.0,175.0,180.0,1,Semiurban,1.0
|
||||
LP001507,Male,Yes,0,1,No,2698,2034.0,122.0,360.0,1,Semiurban,1.0
|
||||
LP001508,Male,Yes,2,1,No,11757,0.0,187.0,180.0,1,Urban,1.0
|
||||
LP001514,Female,Yes,0,1,No,2330,4486.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP001516,Female,Yes,2,1,No,14866,0.0,70.0,360.0,1,Urban,1.0
|
||||
LP001518,Male,Yes,1,1,No,1538,1425.0,30.0,360.0,1,Urban,1.0
|
||||
LP001519,Female,No,0,1,No,10000,1666.0,225.0,360.0,1,Rural,0.0
|
||||
LP001520,Male,Yes,0,1,No,4860,830.0,125.0,360.0,1,Semiurban,1.0
|
||||
LP001528,Male,No,0,1,No,6277,0.0,118.0,360.0,0,Rural,0.0
|
||||
LP001529,Male,Yes,0,1,Yes,2577,3750.0,152.0,360.0,1,Rural,1.0
|
||||
LP001531,Male,No,0,1,No,9166,0.0,244.0,360.0,1,Urban,0.0
|
||||
LP001532,Male,Yes,2,0,No,2281,0.0,113.0,360.0,1,Rural,0.0
|
||||
LP001535,Male,No,0,1,No,3254,0.0,50.0,360.0,1,Urban,1.0
|
||||
LP001536,Male,Yes,3+,1,No,39999,0.0,600.0,180.0,0,Semiurban,1.0
|
||||
LP001541,Male,Yes,1,1,No,6000,0.0,160.0,360.0,0,Rural,1.0
|
||||
LP001543,Male,Yes,1,1,No,9538,0.0,187.0,360.0,1,Urban,1.0
|
||||
LP001546,Male,No,0,1,,2980,2083.0,120.0,360.0,1,Rural,1.0
|
||||
LP001552,Male,Yes,0,1,No,4583,5625.0,255.0,360.0,1,Semiurban,1.0
|
||||
LP001560,Male,Yes,0,0,No,1863,1041.0,98.0,360.0,1,Semiurban,1.0
|
||||
LP001562,Male,Yes,0,1,No,7933,0.0,275.0,360.0,1,Urban,0.0
|
||||
LP001565,Male,Yes,1,1,No,3089,1280.0,121.0,360.0,0,Semiurban,0.0
|
||||
LP001570,Male,Yes,2,1,No,4167,1447.0,158.0,360.0,1,Rural,1.0
|
||||
LP001572,Male,Yes,0,1,No,9323,0.0,75.0,180.0,1,Urban,1.0
|
||||
LP001574,Male,Yes,0,1,No,3707,3166.0,182.0,,1,Rural,1.0
|
||||
LP001577,Female,Yes,0,1,No,4583,0.0,112.0,360.0,1,Rural,0.0
|
||||
LP001578,Male,Yes,0,1,No,2439,3333.0,129.0,360.0,1,Rural,1.0
|
||||
LP001579,Male,No,0,1,No,2237,0.0,63.0,480.0,0,Semiurban,0.0
|
||||
LP001580,Male,Yes,2,1,No,8000,0.0,200.0,360.0,1,Semiurban,1.0
|
||||
LP001581,Male,Yes,0,0,,1820,1769.0,95.0,360.0,1,Rural,1.0
|
||||
LP001585,,Yes,3+,1,No,51763,0.0,700.0,300.0,1,Urban,1.0
|
||||
LP001586,Male,Yes,3+,0,No,3522,0.0,81.0,180.0,1,Rural,0.0
|
||||
LP001594,Male,Yes,0,1,No,5708,5625.0,187.0,360.0,1,Semiurban,1.0
|
||||
LP001603,Male,Yes,0,0,Yes,4344,736.0,87.0,360.0,1,Semiurban,0.0
|
||||
LP001606,Male,Yes,0,1,No,3497,1964.0,116.0,360.0,1,Rural,1.0
|
||||
LP001608,Male,Yes,2,1,No,2045,1619.0,101.0,360.0,1,Rural,1.0
|
||||
LP001610,Male,Yes,3+,1,No,5516,11300.0,495.0,360.0,0,Semiurban,0.0
|
||||
LP001616,Male,Yes,1,1,No,3750,0.0,116.0,360.0,1,Semiurban,1.0
|
||||
LP001630,Male,No,0,0,No,2333,1451.0,102.0,480.0,0,Urban,0.0
|
||||
LP001633,Male,Yes,1,1,No,6400,7250.0,180.0,360.0,0,Urban,0.0
|
||||
LP001634,Male,No,0,1,No,1916,5063.0,67.0,360.0,0,Rural,0.0
|
||||
LP001636,Male,Yes,0,1,No,4600,0.0,73.0,180.0,1,Semiurban,1.0
|
||||
LP001637,Male,Yes,1,1,No,33846,0.0,260.0,360.0,1,Semiurban,0.0
|
||||
LP001639,Female,Yes,0,1,No,3625,0.0,108.0,360.0,1,Semiurban,1.0
|
||||
LP001640,Male,Yes,0,1,Yes,39147,4750.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001641,Male,Yes,1,1,Yes,2178,0.0,66.0,300.0,0,Rural,0.0
|
||||
LP001643,Male,Yes,0,1,No,2383,2138.0,58.0,360.0,0,Rural,1.0
|
||||
LP001644,,Yes,0,1,Yes,674,5296.0,168.0,360.0,1,Rural,1.0
|
||||
LP001647,Male,Yes,0,1,No,9328,0.0,188.0,180.0,1,Rural,1.0
|
||||
LP001653,Male,No,0,0,No,4885,0.0,48.0,360.0,1,Rural,1.0
|
||||
LP001656,Male,No,0,1,No,12000,0.0,164.0,360.0,1,Semiurban,0.0
|
||||
LP001657,Male,Yes,0,0,No,6033,0.0,160.0,360.0,1,Urban,0.0
|
||||
LP001658,Male,No,0,1,No,3858,0.0,76.0,360.0,1,Semiurban,1.0
|
||||
LP001664,Male,No,0,1,No,4191,0.0,120.0,360.0,1,Rural,1.0
|
||||
LP001665,Male,Yes,1,1,No,3125,2583.0,170.0,360.0,1,Semiurban,0.0
|
||||
LP001666,Male,No,0,1,No,8333,3750.0,187.0,360.0,1,Rural,1.0
|
||||
LP001669,Female,No,0,0,No,1907,2365.0,120.0,,1,Urban,1.0
|
||||
LP001671,Female,Yes,0,1,No,3416,2816.0,113.0,360.0,0,Semiurban,1.0
|
||||
LP001673,Male,No,0,1,Yes,11000,0.0,83.0,360.0,1,Urban,0.0
|
||||
LP001674,Male,Yes,1,0,No,2600,2500.0,90.0,360.0,1,Semiurban,1.0
|
||||
LP001677,Male,No,2,1,No,4923,0.0,166.0,360.0,0,Semiurban,1.0
|
||||
LP001682,Male,Yes,3+,0,No,3992,0.0,0.0,180.0,1,Urban,0.0
|
||||
LP001688,Male,Yes,1,0,No,3500,1083.0,135.0,360.0,1,Urban,1.0
|
||||
LP001691,Male,Yes,2,0,No,3917,0.0,124.0,360.0,1,Semiurban,1.0
|
||||
LP001692,Female,No,0,0,No,4408,0.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001693,Female,No,0,1,No,3244,0.0,80.0,360.0,1,Urban,1.0
|
||||
LP001698,Male,No,0,0,No,3975,2531.0,55.0,360.0,1,Rural,1.0
|
||||
LP001699,Male,No,0,1,No,2479,0.0,59.0,360.0,1,Urban,1.0
|
||||
LP001702,Male,No,0,1,No,3418,0.0,127.0,360.0,1,Semiurban,0.0
|
||||
LP001708,Female,No,0,1,No,10000,0.0,214.0,360.0,1,Semiurban,0.0
|
||||
LP001711,Male,Yes,3+,1,No,3430,1250.0,128.0,360.0,0,Semiurban,0.0
|
||||
LP001713,Male,Yes,1,1,Yes,7787,0.0,240.0,360.0,1,Urban,1.0
|
||||
LP001715,Male,Yes,3+,0,Yes,5703,0.0,130.0,360.0,1,Rural,1.0
|
||||
LP001716,Male,Yes,0,1,No,3173,3021.0,137.0,360.0,1,Urban,1.0
|
||||
LP001720,Male,Yes,3+,0,No,3850,983.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP001722,Male,Yes,0,1,No,150,1800.0,135.0,360.0,1,Rural,0.0
|
||||
LP001726,Male,Yes,0,1,No,3727,1775.0,131.0,360.0,1,Semiurban,1.0
|
||||
LP001732,Male,Yes,2,1,,5000,0.0,72.0,360.0,0,Semiurban,0.0
|
||||
LP001734,Female,Yes,2,1,No,4283,2383.0,127.0,360.0,0,Semiurban,1.0
|
||||
LP001736,Male,Yes,0,1,No,2221,0.0,60.0,360.0,0,Urban,0.0
|
||||
LP001743,Male,Yes,2,1,No,4009,1717.0,116.0,360.0,1,Semiurban,1.0
|
||||
LP001744,Male,No,0,1,No,2971,2791.0,144.0,360.0,1,Semiurban,1.0
|
||||
LP001749,Male,Yes,0,1,No,7578,1010.0,175.0,,1,Semiurban,1.0
|
||||
LP001750,Male,Yes,0,1,No,6250,0.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP001751,Male,Yes,0,1,No,3250,0.0,170.0,360.0,1,Rural,0.0
|
||||
LP001754,Male,Yes,,0,Yes,4735,0.0,138.0,360.0,1,Urban,0.0
|
||||
LP001758,Male,Yes,2,1,No,6250,1695.0,210.0,360.0,1,Semiurban,1.0
|
||||
LP001760,Male,,,1,No,4758,0.0,158.0,480.0,1,Semiurban,1.0
|
||||
LP001761,Male,No,0,1,Yes,6400,0.0,200.0,360.0,1,Rural,1.0
|
||||
LP001765,Male,Yes,1,1,No,2491,2054.0,104.0,360.0,1,Semiurban,1.0
|
||||
LP001768,Male,Yes,0,1,,3716,0.0,42.0,180.0,1,Rural,1.0
|
||||
LP001770,Male,No,0,0,No,3189,2598.0,120.0,,1,Rural,1.0
|
||||
LP001776,Female,No,0,1,No,8333,0.0,280.0,360.0,1,Semiurban,1.0
|
||||
LP001778,Male,Yes,1,1,No,3155,1779.0,140.0,360.0,1,Semiurban,1.0
|
||||
LP001784,Male,Yes,1,1,No,5500,1260.0,170.0,360.0,1,Rural,1.0
|
||||
LP001786,Male,Yes,0,1,,5746,0.0,255.0,360.0,0,Urban,0.0
|
||||
LP001788,Female,No,0,1,Yes,3463,0.0,122.0,360.0,0,Urban,1.0
|
||||
LP001790,Female,No,1,1,No,3812,0.0,112.0,360.0,1,Rural,1.0
|
||||
LP001792,Male,Yes,1,1,No,3315,0.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP001798,Male,Yes,2,1,No,5819,5000.0,120.0,360.0,1,Rural,1.0
|
||||
LP001800,Male,Yes,1,0,No,2510,1983.0,140.0,180.0,1,Urban,0.0
|
||||
LP001806,Male,No,0,1,No,2965,5701.0,155.0,60.0,1,Urban,1.0
|
||||
LP001807,Male,Yes,2,1,Yes,6250,1300.0,108.0,360.0,1,Rural,1.0
|
||||
LP001811,Male,Yes,0,0,No,3406,4417.0,123.0,360.0,1,Semiurban,1.0
|
||||
LP001813,Male,No,0,1,Yes,6050,4333.0,120.0,180.0,1,Urban,0.0
|
||||
LP001814,Male,Yes,2,1,No,9703,0.0,112.0,360.0,1,Urban,1.0
|
||||
LP001819,Male,Yes,1,0,No,6608,0.0,137.0,180.0,1,Urban,1.0
|
||||
LP001824,Male,Yes,1,1,No,2882,1843.0,123.0,480.0,1,Semiurban,1.0
|
||||
LP001825,Male,Yes,0,1,No,1809,1868.0,90.0,360.0,1,Urban,1.0
|
||||
LP001835,Male,Yes,0,0,No,1668,3890.0,201.0,360.0,0,Semiurban,0.0
|
||||
LP001836,Female,No,2,1,No,3427,0.0,138.0,360.0,1,Urban,0.0
|
||||
LP001841,Male,No,0,0,Yes,2583,2167.0,104.0,360.0,1,Rural,1.0
|
||||
LP001843,Male,Yes,1,0,No,2661,7101.0,279.0,180.0,1,Semiurban,1.0
|
||||
LP001844,Male,No,0,1,Yes,16250,0.0,192.0,360.0,0,Urban,0.0
|
||||
LP001846,Female,No,3+,1,No,3083,0.0,255.0,360.0,1,Rural,1.0
|
||||
LP001849,Male,No,0,0,No,6045,0.0,115.0,360.0,0,Rural,0.0
|
||||
LP001854,Male,Yes,3+,1,No,5250,0.0,94.0,360.0,1,Urban,0.0
|
||||
LP001859,Male,Yes,0,1,No,14683,2100.0,304.0,360.0,1,Rural,0.0
|
||||
LP001864,Male,Yes,3+,0,No,4931,0.0,128.0,360.0,0,Semiurban,0.0
|
||||
LP001865,Male,Yes,1,1,No,6083,4250.0,330.0,360.0,0,Urban,1.0
|
||||
LP001868,Male,No,0,1,No,2060,2209.0,134.0,360.0,1,Semiurban,1.0
|
||||
LP001870,Female,No,1,1,No,3481,0.0,155.0,36.0,1,Semiurban,0.0
|
||||
LP001871,Female,No,0,1,No,7200,0.0,120.0,360.0,1,Rural,1.0
|
||||
LP001872,Male,No,0,1,Yes,5166,0.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP001875,Male,No,0,1,No,4095,3447.0,151.0,360.0,1,Rural,1.0
|
||||
LP001877,Male,Yes,2,1,No,4708,1387.0,150.0,360.0,1,Semiurban,1.0
|
||||
LP001882,Male,Yes,3+,1,No,4333,1811.0,160.0,360.0,0,Urban,1.0
|
||||
LP001883,Female,No,0,1,,3418,0.0,135.0,360.0,1,Rural,0.0
|
||||
LP001884,Female,No,1,1,No,2876,1560.0,90.0,360.0,1,Urban,1.0
|
||||
LP001888,Female,No,0,1,No,3237,0.0,30.0,360.0,1,Urban,1.0
|
||||
LP001891,Male,Yes,0,1,No,11146,0.0,136.0,360.0,1,Urban,1.0
|
||||
LP001892,Male,No,0,1,No,2833,1857.0,126.0,360.0,1,Rural,1.0
|
||||
LP001894,Male,Yes,0,1,No,2620,2223.0,150.0,360.0,1,Semiurban,1.0
|
||||
LP001896,Male,Yes,2,1,No,3900,0.0,90.0,360.0,1,Semiurban,1.0
|
||||
LP001900,Male,Yes,1,1,No,2750,1842.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP001903,Male,Yes,0,1,No,3993,3274.0,207.0,360.0,1,Semiurban,1.0
|
||||
LP001904,Male,Yes,0,1,No,3103,1300.0,80.0,360.0,1,Urban,1.0
|
||||
LP001907,Male,Yes,0,1,No,14583,0.0,436.0,360.0,1,Semiurban,1.0
|
||||
LP001908,Female,Yes,0,0,No,4100,0.0,124.0,360.0,0,Rural,1.0
|
||||
LP001910,Male,No,1,0,Yes,4053,2426.0,158.0,360.0,0,Urban,0.0
|
||||
LP001914,Male,Yes,0,1,No,3927,800.0,112.0,360.0,1,Semiurban,1.0
|
||||
LP001915,Male,Yes,2,1,No,2301,985.7999878,78.0,180.0,1,Urban,1.0
|
||||
LP001917,Female,No,0,1,No,1811,1666.0,54.0,360.0,1,Urban,1.0
|
||||
LP001922,Male,Yes,0,1,No,20667,0.0,0.0,360.0,1,Rural,0.0
|
||||
LP001924,Male,No,0,1,No,3158,3053.0,89.0,360.0,1,Rural,1.0
|
||||
LP001925,Female,No,0,1,Yes,2600,1717.0,99.0,300.0,1,Semiurban,0.0
|
||||
LP001926,Male,Yes,0,1,No,3704,2000.0,120.0,360.0,1,Rural,1.0
|
||||
LP001931,Female,No,0,1,No,4124,0.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP001935,Male,No,0,1,No,9508,0.0,187.0,360.0,1,Rural,1.0
|
||||
LP001936,Male,Yes,0,1,No,3075,2416.0,139.0,360.0,1,Rural,1.0
|
||||
LP001938,Male,Yes,2,1,No,4400,0.0,127.0,360.0,0,Semiurban,0.0
|
||||
LP001940,Male,Yes,2,1,No,3153,1560.0,134.0,360.0,1,Urban,1.0
|
||||
LP001945,Female,No,,1,No,5417,0.0,143.0,480.0,0,Urban,0.0
|
||||
LP001947,Male,Yes,0,1,No,2383,3334.0,172.0,360.0,1,Semiurban,1.0
|
||||
LP001949,Male,Yes,3+,1,,4416,1250.0,110.0,360.0,1,Urban,1.0
|
||||
LP001953,Male,Yes,1,1,No,6875,0.0,200.0,360.0,1,Semiurban,1.0
|
||||
LP001954,Female,Yes,1,1,No,4666,0.0,135.0,360.0,1,Urban,1.0
|
||||
LP001955,Female,No,0,1,No,5000,2541.0,151.0,480.0,1,Rural,0.0
|
||||
LP001963,Male,Yes,1,1,No,2014,2925.0,113.0,360.0,1,Urban,0.0
|
||||
LP001964,Male,Yes,0,0,No,1800,2934.0,93.0,360.0,0,Urban,0.0
|
||||
LP001972,Male,Yes,,0,No,2875,1750.0,105.0,360.0,1,Semiurban,1.0
|
||||
LP001974,Female,No,0,1,No,5000,0.0,132.0,360.0,1,Rural,1.0
|
||||
LP001977,Male,Yes,1,1,No,1625,1803.0,96.0,360.0,1,Urban,1.0
|
||||
LP001978,Male,No,0,1,No,4000,2500.0,140.0,360.0,1,Rural,1.0
|
||||
LP001990,Male,No,0,0,No,2000,0.0,0.0,360.0,1,Urban,0.0
|
||||
LP001993,Female,No,0,1,No,3762,1666.0,135.0,360.0,1,Rural,1.0
|
||||
LP001994,Female,No,0,1,No,2400,1863.0,104.0,360.0,0,Urban,0.0
|
||||
LP001996,Male,No,0,1,No,20233,0.0,480.0,360.0,1,Rural,0.0
|
||||
LP001998,Male,Yes,2,0,No,7667,0.0,185.0,360.0,0,Rural,1.0
|
||||
LP002002,Female,No,0,1,No,2917,0.0,84.0,360.0,1,Semiurban,1.0
|
||||
LP002004,Male,No,0,0,No,2927,2405.0,111.0,360.0,1,Semiurban,1.0
|
||||
LP002006,Female,No,0,1,No,2507,0.0,56.0,360.0,1,Rural,1.0
|
||||
LP002008,Male,Yes,2,1,Yes,5746,0.0,144.0,84.0,0,Rural,1.0
|
||||
LP002024,,Yes,0,1,No,2473,1843.0,159.0,360.0,1,Rural,0.0
|
||||
LP002031,Male,Yes,1,0,No,3399,1640.0,111.0,180.0,1,Urban,1.0
|
||||
LP002035,Male,Yes,2,1,No,3717,0.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP002036,Male,Yes,0,1,No,2058,2134.0,88.0,360.0,0,Urban,1.0
|
||||
LP002043,Female,No,1,1,No,3541,0.0,112.0,360.0,0,Semiurban,1.0
|
||||
LP002050,Male,Yes,1,1,Yes,10000,0.0,155.0,360.0,1,Rural,0.0
|
||||
LP002051,Male,Yes,0,1,No,2400,2167.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP002053,Male,Yes,3+,1,No,4342,189.0,124.0,360.0,1,Semiurban,1.0
|
||||
LP002054,Male,Yes,2,0,No,3601,1590.0,0.0,360.0,1,Rural,1.0
|
||||
LP002055,Female,No,0,1,No,3166,2985.0,132.0,360.0,0,Rural,1.0
|
||||
LP002065,Male,Yes,3+,1,No,15000,0.0,300.0,360.0,1,Rural,1.0
|
||||
LP002067,Male,Yes,1,1,Yes,8666,4983.0,376.0,360.0,0,Rural,0.0
|
||||
LP002068,Male,No,0,1,No,4917,0.0,130.0,360.0,0,Rural,1.0
|
||||
LP002082,Male,Yes,0,1,Yes,5818,2160.0,184.0,360.0,1,Semiurban,1.0
|
||||
LP002086,Female,Yes,0,1,No,4333,2451.0,110.0,360.0,1,Urban,0.0
|
||||
LP002087,Female,No,0,1,No,2500,0.0,67.0,360.0,1,Urban,1.0
|
||||
LP002097,Male,No,1,1,No,4384,1793.0,117.0,360.0,1,Urban,1.0
|
||||
LP002098,Male,No,0,1,No,2935,0.0,98.0,360.0,1,Semiurban,1.0
|
||||
LP002100,Male,No,,1,No,2833,0.0,71.0,360.0,1,Urban,1.0
|
||||
LP002101,Male,Yes,0,1,,63337,0.0,490.0,180.0,1,Urban,1.0
|
||||
LP002103,,Yes,1,1,Yes,9833,1833.0,182.0,180.0,1,Urban,1.0
|
||||
LP002106,Male,Yes,,1,Yes,5503,4490.0,70.0,,1,Semiurban,1.0
|
||||
LP002110,Male,Yes,1,1,,5250,688.0,160.0,360.0,1,Rural,1.0
|
||||
LP002112,Male,Yes,2,1,Yes,2500,4600.0,176.0,360.0,1,Rural,1.0
|
||||
LP002113,Female,No,3+,0,No,1830,0.0,0.0,360.0,0,Urban,0.0
|
||||
LP002114,Female,No,0,1,No,4160,0.0,71.0,360.0,1,Semiurban,1.0
|
||||
LP002115,Male,Yes,3+,0,No,2647,1587.0,173.0,360.0,1,Rural,0.0
|
||||
LP002116,Female,No,0,1,No,2378,0.0,46.0,360.0,1,Rural,0.0
|
||||
LP002119,Male,Yes,1,0,No,4554,1229.0,158.0,360.0,1,Urban,1.0
|
||||
LP002126,Male,Yes,3+,0,No,3173,0.0,74.0,360.0,1,Semiurban,1.0
|
||||
LP002128,Male,Yes,2,1,,2583,2330.0,125.0,360.0,1,Rural,1.0
|
||||
LP002129,Male,Yes,0,1,No,2499,2458.0,160.0,360.0,1,Semiurban,1.0
|
||||
LP002130,Male,Yes,,0,No,3523,3230.0,152.0,360.0,0,Rural,0.0
|
||||
LP002131,Male,Yes,2,0,No,3083,2168.0,126.0,360.0,1,Urban,1.0
|
||||
LP002137,Male,Yes,0,1,No,6333,4583.0,259.0,360.0,0,Semiurban,1.0
|
||||
LP002138,Male,Yes,0,1,No,2625,6250.0,187.0,360.0,1,Rural,1.0
|
||||
LP002139,Male,Yes,0,1,No,9083,0.0,228.0,360.0,1,Semiurban,1.0
|
||||
LP002140,Male,No,0,1,No,8750,4167.0,308.0,360.0,1,Rural,0.0
|
||||
LP002141,Male,Yes,3+,1,No,2666,2083.0,95.0,360.0,1,Rural,1.0
|
||||
LP002142,Female,Yes,0,1,Yes,5500,0.0,105.0,360.0,0,Rural,0.0
|
||||
LP002143,Female,Yes,0,1,No,2423,505.0,130.0,360.0,1,Semiurban,1.0
|
||||
LP002144,Female,No,,1,No,3813,0.0,116.0,180.0,1,Urban,1.0
|
||||
LP002149,Male,Yes,2,1,No,8333,3167.0,165.0,360.0,1,Rural,1.0
|
||||
LP002151,Male,Yes,1,1,No,3875,0.0,67.0,360.0,1,Urban,0.0
|
||||
LP002158,Male,Yes,0,0,No,3000,1666.0,100.0,480.0,0,Urban,0.0
|
||||
LP002160,Male,Yes,3+,1,No,5167,3167.0,200.0,360.0,1,Semiurban,1.0
|
||||
LP002161,Female,No,1,1,No,4723,0.0,81.0,360.0,1,Semiurban,0.0
|
||||
LP002170,Male,Yes,2,1,No,5000,3667.0,236.0,360.0,1,Semiurban,1.0
|
||||
LP002175,Male,Yes,0,1,No,4750,2333.0,130.0,360.0,1,Urban,1.0
|
||||
LP002178,Male,Yes,0,1,No,3013,3033.0,95.0,300.0,0,Urban,1.0
|
||||
LP002180,Male,No,0,1,Yes,6822,0.0,141.0,360.0,1,Rural,1.0
|
||||
LP002181,Male,No,0,0,No,6216,0.0,133.0,360.0,1,Rural,0.0
|
||||
LP002187,Male,No,0,1,No,2500,0.0,96.0,480.0,1,Semiurban,0.0
|
||||
LP002188,Male,No,0,1,No,5124,0.0,124.0,,0,Rural,0.0
|
||||
LP002190,Male,Yes,1,1,No,6325,0.0,175.0,360.0,1,Semiurban,1.0
|
||||
LP002191,Male,Yes,0,1,No,19730,5266.0,570.0,360.0,1,Rural,0.0
|
||||
LP002194,Female,No,0,1,Yes,15759,0.0,55.0,360.0,1,Semiurban,1.0
|
||||
LP002197,Male,Yes,2,1,No,5185,0.0,155.0,360.0,1,Semiurban,1.0
|
||||
LP002201,Male,Yes,2,1,Yes,9323,7873.0,380.0,300.0,1,Rural,1.0
|
||||
LP002205,Male,No,1,1,No,3062,1987.0,111.0,180.0,0,Urban,0.0
|
||||
LP002209,Female,No,0,1,,2764,1459.0,110.0,360.0,1,Urban,1.0
|
||||
LP002211,Male,Yes,0,1,No,4817,923.0,120.0,180.0,1,Urban,1.0
|
||||
LP002219,Male,Yes,3+,1,No,8750,4996.0,130.0,360.0,1,Rural,1.0
|
||||
LP002223,Male,Yes,0,1,No,4310,0.0,130.0,360.0,0,Semiurban,1.0
|
||||
LP002224,Male,No,0,1,No,3069,0.0,71.0,480.0,1,Urban,0.0
|
||||
LP002225,Male,Yes,2,1,No,5391,0.0,130.0,360.0,1,Urban,1.0
|
||||
LP002226,Male,Yes,0,1,,3333,2500.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP002229,Male,No,0,1,No,5941,4232.0,296.0,360.0,1,Semiurban,1.0
|
||||
LP002231,Female,No,0,1,No,6000,0.0,156.0,360.0,1,Urban,1.0
|
||||
LP002234,Male,No,0,1,Yes,7167,0.0,128.0,360.0,1,Urban,1.0
|
||||
LP002236,Male,Yes,2,1,No,4566,0.0,100.0,360.0,1,Urban,0.0
|
||||
LP002237,Male,No,1,1,,3667,0.0,113.0,180.0,1,Urban,1.0
|
||||
LP002239,Male,No,0,0,No,2346,1600.0,132.0,360.0,1,Semiurban,1.0
|
||||
LP002243,Male,Yes,0,0,No,3010,3136.0,0.0,360.0,0,Urban,0.0
|
||||
LP002244,Male,Yes,0,1,No,2333,2417.0,136.0,360.0,1,Urban,1.0
|
||||
LP002250,Male,Yes,0,1,No,5488,0.0,125.0,360.0,1,Rural,1.0
|
||||
LP002255,Male,No,3+,1,No,9167,0.0,185.0,360.0,1,Rural,1.0
|
||||
LP002262,Male,Yes,3+,1,No,9504,0.0,275.0,360.0,1,Rural,1.0
|
||||
LP002263,Male,Yes,0,1,No,2583,2115.0,120.0,360.0,0,Urban,1.0
|
||||
LP002265,Male,Yes,2,0,No,1993,1625.0,113.0,180.0,1,Semiurban,1.0
|
||||
LP002266,Male,Yes,2,1,No,3100,1400.0,113.0,360.0,1,Urban,1.0
|
||||
LP002272,Male,Yes,2,1,No,3276,484.0,135.0,360.0,0,Semiurban,1.0
|
||||
LP002277,Female,No,0,1,No,3180,0.0,71.0,360.0,0,Urban,0.0
|
||||
LP002281,Male,Yes,0,1,No,3033,1459.0,95.0,360.0,1,Urban,1.0
|
||||
LP002284,Male,No,0,0,No,3902,1666.0,109.0,360.0,1,Rural,1.0
|
||||
LP002287,Female,No,0,1,No,1500,1800.0,103.0,360.0,0,Semiurban,0.0
|
||||
LP002288,Male,Yes,2,0,No,2889,0.0,45.0,180.0,0,Urban,0.0
|
||||
LP002296,Male,No,0,0,No,2755,0.0,65.0,300.0,1,Rural,0.0
|
||||
LP002297,Male,No,0,1,No,2500,20000.0,103.0,360.0,1,Semiurban,1.0
|
||||
LP002300,Female,No,0,0,No,1963,0.0,53.0,360.0,1,Semiurban,1.0
|
||||
LP002301,Female,No,0,1,Yes,7441,0.0,194.0,360.0,1,Rural,0.0
|
||||
LP002305,Female,No,0,1,No,4547,0.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP002308,Male,Yes,0,0,No,2167,2400.0,115.0,360.0,1,Urban,1.0
|
||||
LP002314,Female,No,0,0,No,2213,0.0,66.0,360.0,1,Rural,1.0
|
||||
LP002315,Male,Yes,1,1,No,8300,0.0,152.0,300.0,0,Semiurban,0.0
|
||||
LP002317,Male,Yes,3+,1,No,81000,0.0,360.0,360.0,0,Rural,0.0
|
||||
LP002318,Female,No,1,0,Yes,3867,0.0,62.0,360.0,1,Semiurban,0.0
|
||||
LP002319,Male,Yes,0,1,,6256,0.0,160.0,360.0,0,Urban,1.0
|
||||
LP002328,Male,Yes,0,0,No,6096,0.0,218.0,360.0,0,Rural,0.0
|
||||
LP002332,Male,Yes,0,0,No,2253,2033.0,110.0,360.0,1,Rural,1.0
|
||||
LP002335,Female,Yes,0,0,No,2149,3237.0,178.0,360.0,0,Semiurban,0.0
|
||||
LP002337,Female,No,0,1,No,2995,0.0,60.0,360.0,1,Urban,1.0
|
||||
LP002341,Female,No,1,1,No,2600,0.0,160.0,360.0,1,Urban,0.0
|
||||
LP002342,Male,Yes,2,1,Yes,1600,20000.0,239.0,360.0,1,Urban,0.0
|
||||
LP002345,Male,Yes,0,1,No,1025,2773.0,112.0,360.0,1,Rural,1.0
|
||||
LP002347,Male,Yes,0,1,No,3246,1417.0,138.0,360.0,1,Semiurban,1.0
|
||||
LP002348,Male,Yes,0,1,No,5829,0.0,138.0,360.0,1,Rural,1.0
|
||||
LP002357,Female,No,0,0,No,2720,0.0,80.0,,0,Urban,0.0
|
||||
LP002361,Male,Yes,0,1,No,1820,1719.0,100.0,360.0,1,Urban,1.0
|
||||
LP002362,Male,Yes,1,1,No,7250,1667.0,110.0,,0,Urban,0.0
|
||||
LP002364,Male,Yes,0,1,No,14880,0.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP002366,Male,Yes,0,1,No,2666,4300.0,121.0,360.0,1,Rural,1.0
|
||||
LP002367,Female,No,1,0,No,4606,0.0,81.0,360.0,1,Rural,0.0
|
||||
LP002368,Male,Yes,2,1,No,5935,0.0,133.0,360.0,1,Semiurban,1.0
|
||||
LP002369,Male,Yes,0,1,No,2920,16.12000084,87.0,360.0,1,Rural,1.0
|
||||
LP002370,Male,No,0,0,No,2717,0.0,60.0,180.0,1,Urban,1.0
|
||||
LP002377,Female,No,1,1,Yes,8624,0.0,150.0,360.0,1,Semiurban,1.0
|
||||
LP002379,Male,No,0,1,No,6500,0.0,105.0,360.0,0,Rural,0.0
|
||||
LP002386,Male,No,0,1,,12876,0.0,405.0,360.0,1,Semiurban,1.0
|
||||
LP002387,Male,Yes,0,1,No,2425,2340.0,143.0,360.0,1,Semiurban,1.0
|
||||
LP002390,Male,No,0,1,No,3750,0.0,100.0,360.0,1,Urban,1.0
|
||||
LP002393,Female,,,1,No,10047,0.0,0.0,240.0,1,Semiurban,1.0
|
||||
LP002398,Male,No,0,1,No,1926,1851.0,50.0,360.0,1,Semiurban,1.0
|
||||
LP002401,Male,Yes,0,1,No,2213,1125.0,0.0,360.0,1,Urban,1.0
|
||||
LP002403,Male,No,0,1,Yes,10416,0.0,187.0,360.0,0,Urban,0.0
|
||||
LP002407,Female,Yes,0,0,Yes,7142,0.0,138.0,360.0,1,Rural,1.0
|
||||
LP002408,Male,No,0,1,No,3660,5064.0,187.0,360.0,1,Semiurban,1.0
|
||||
LP002409,Male,Yes,0,1,No,7901,1833.0,180.0,360.0,1,Rural,1.0
|
||||
LP002418,Male,No,3+,0,No,4707,1993.0,148.0,360.0,1,Semiurban,1.0
|
||||
LP002422,Male,No,1,1,No,37719,0.0,152.0,360.0,1,Semiurban,1.0
|
||||
LP002424,Male,Yes,0,1,No,7333,8333.0,175.0,300.0,0,Rural,1.0
|
||||
LP002429,Male,Yes,1,1,Yes,3466,1210.0,130.0,360.0,1,Rural,1.0
|
||||
LP002434,Male,Yes,2,0,No,4652,0.0,110.0,360.0,1,Rural,1.0
|
||||
LP002435,Male,Yes,0,1,,3539,1376.0,55.0,360.0,1,Rural,0.0
|
||||
LP002443,Male,Yes,2,1,No,3340,1710.0,150.0,360.0,0,Rural,0.0
|
||||
LP002444,Male,No,1,0,Yes,2769,1542.0,190.0,360.0,0,Semiurban,0.0
|
||||
LP002446,Male,Yes,2,0,No,2309,1255.0,125.0,360.0,0,Rural,0.0
|
||||
LP002447,Male,Yes,2,0,No,1958,1456.0,60.0,300.0,0,Urban,1.0
|
||||
LP002448,Male,Yes,0,1,No,3948,1733.0,149.0,360.0,0,Rural,0.0
|
||||
LP002449,Male,Yes,0,1,No,2483,2466.0,90.0,180.0,0,Rural,1.0
|
||||
LP002453,Male,No,0,1,Yes,7085,0.0,84.0,360.0,1,Semiurban,1.0
|
||||
LP002455,Male,Yes,2,1,No,3859,0.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP002459,Male,Yes,0,1,No,4301,0.0,118.0,360.0,1,Urban,1.0
|
||||
LP002467,Male,Yes,0,1,No,3708,2569.0,173.0,360.0,1,Urban,0.0
|
||||
LP002472,Male,No,2,1,No,4354,0.0,136.0,360.0,1,Rural,1.0
|
||||
LP002473,Male,Yes,0,1,No,8334,0.0,160.0,360.0,1,Semiurban,0.0
|
||||
LP002478,,Yes,0,1,Yes,2083,4083.0,160.0,360.0,0,Semiurban,1.0
|
||||
LP002484,Male,Yes,3+,1,No,7740,0.0,128.0,180.0,1,Urban,1.0
|
||||
LP002487,Male,Yes,0,1,No,3015,2188.0,153.0,360.0,1,Rural,1.0
|
||||
LP002489,Female,No,1,0,,5191,0.0,132.0,360.0,1,Semiurban,1.0
|
||||
LP002493,Male,No,0,1,No,4166,0.0,98.0,360.0,0,Semiurban,0.0
|
||||
LP002494,Male,No,0,1,No,6000,0.0,140.0,360.0,1,Rural,1.0
|
||||
LP002500,Male,Yes,3+,0,No,2947,1664.0,70.0,180.0,0,Urban,0.0
|
||||
LP002501,,Yes,0,1,No,16692,0.0,110.0,360.0,1,Semiurban,1.0
|
||||
LP002502,Female,Yes,2,0,,210,2917.0,98.0,360.0,1,Semiurban,1.0
|
||||
LP002505,Male,Yes,0,1,No,4333,2451.0,110.0,360.0,1,Urban,0.0
|
||||
LP002515,Male,Yes,1,1,Yes,3450,2079.0,162.0,360.0,1,Semiurban,1.0
|
||||
LP002517,Male,Yes,1,0,No,2653,1500.0,113.0,180.0,0,Rural,0.0
|
||||
LP002519,Male,Yes,3+,1,No,4691,0.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP002522,Female,No,0,1,Yes,2500,0.0,93.0,360.0,0,Urban,1.0
|
||||
LP002524,Male,No,2,1,No,5532,4648.0,162.0,360.0,1,Rural,1.0
|
||||
LP002527,Male,Yes,2,1,Yes,16525,1014.0,150.0,360.0,1,Rural,1.0
|
||||
LP002529,Male,Yes,2,1,No,6700,1750.0,230.0,300.0,1,Semiurban,1.0
|
||||
LP002530,,Yes,2,1,No,2873,1872.0,132.0,360.0,0,Semiurban,0.0
|
||||
LP002531,Male,Yes,1,1,Yes,16667,2250.0,86.0,360.0,1,Semiurban,1.0
|
||||
LP002533,Male,Yes,2,1,No,2947,1603.0,0.0,360.0,1,Urban,0.0
|
||||
LP002534,Female,No,0,0,No,4350,0.0,154.0,360.0,1,Rural,1.0
|
||||
LP002536,Male,Yes,3+,0,No,3095,0.0,113.0,360.0,1,Rural,1.0
|
||||
LP002537,Male,Yes,0,1,No,2083,3150.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP002541,Male,Yes,0,1,No,10833,0.0,234.0,360.0,1,Semiurban,1.0
|
||||
LP002543,Male,Yes,2,1,No,8333,0.0,246.0,360.0,1,Semiurban,1.0
|
||||
LP002544,Male,Yes,1,0,No,1958,2436.0,131.0,360.0,1,Rural,1.0
|
||||
LP002545,Male,No,2,1,No,3547,0.0,80.0,360.0,0,Rural,0.0
|
||||
LP002547,Male,Yes,1,1,No,18333,0.0,500.0,360.0,1,Urban,0.0
|
||||
LP002555,Male,Yes,2,1,Yes,4583,2083.0,160.0,360.0,1,Semiurban,1.0
|
||||
LP002556,Male,No,0,1,No,2435,0.0,75.0,360.0,1,Urban,0.0
|
||||
LP002560,Male,No,0,0,No,2699,2785.0,96.0,360.0,0,Semiurban,1.0
|
||||
LP002562,Male,Yes,1,0,No,5333,1131.0,186.0,360.0,0,Urban,1.0
|
||||
LP002571,Male,No,0,0,No,3691,0.0,110.0,360.0,1,Rural,1.0
|
||||
LP002582,Female,No,0,0,Yes,17263,0.0,225.0,360.0,1,Semiurban,1.0
|
||||
LP002585,Male,Yes,0,1,No,3597,2157.0,119.0,360.0,0,Rural,0.0
|
||||
LP002586,Female,Yes,1,1,No,3326,913.0,105.0,84.0,1,Semiurban,1.0
|
||||
LP002587,Male,Yes,0,0,No,2600,1700.0,107.0,360.0,1,Rural,1.0
|
||||
LP002588,Male,Yes,0,1,No,4625,2857.0,111.0,12.0,0,Urban,1.0
|
||||
LP002600,Male,Yes,1,1,Yes,2895,0.0,95.0,360.0,1,Semiurban,1.0
|
||||
LP002602,Male,No,0,1,No,6283,4416.0,209.0,360.0,0,Rural,0.0
|
||||
LP002603,Female,No,0,1,No,645,3683.0,113.0,480.0,1,Rural,1.0
|
||||
LP002606,Female,No,0,1,No,3159,0.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP002615,Male,Yes,2,1,No,4865,5624.0,208.0,360.0,1,Semiurban,1.0
|
||||
LP002618,Male,Yes,1,0,No,4050,5302.0,138.0,360.0,0,Rural,0.0
|
||||
LP002619,Male,Yes,0,0,No,3814,1483.0,124.0,300.0,1,Semiurban,1.0
|
||||
LP002622,Male,Yes,2,1,No,3510,4416.0,243.0,360.0,1,Rural,1.0
|
||||
LP002624,Male,Yes,0,1,No,20833,6667.0,480.0,360.0,0,Urban,1.0
|
||||
LP002625,,No,0,1,No,3583,0.0,96.0,360.0,1,Urban,0.0
|
||||
LP002626,Male,Yes,0,1,Yes,2479,3013.0,188.0,360.0,1,Urban,1.0
|
||||
LP002634,Female,No,1,1,No,13262,0.0,40.0,360.0,1,Urban,1.0
|
||||
LP002637,Male,No,0,0,No,3598,1287.0,100.0,360.0,1,Rural,0.0
|
||||
LP002640,Male,Yes,1,1,No,6065,2004.0,250.0,360.0,1,Semiurban,1.0
|
||||
LP002643,Male,Yes,2,1,No,3283,2035.0,148.0,360.0,1,Urban,1.0
|
||||
LP002648,Male,Yes,0,1,No,2130,6666.0,70.0,180.0,1,Semiurban,0.0
|
||||
LP002652,Male,No,0,1,No,5815,3666.0,311.0,360.0,1,Rural,0.0
|
||||
LP002659,Male,Yes,3+,1,No,3466,3428.0,150.0,360.0,1,Rural,1.0
|
||||
LP002670,Female,Yes,2,1,No,2031,1632.0,113.0,480.0,1,Semiurban,1.0
|
||||
LP002682,Male,Yes,,0,No,3074,1800.0,123.0,360.0,0,Semiurban,0.0
|
||||
LP002683,Male,No,0,1,No,4683,1915.0,185.0,360.0,1,Semiurban,0.0
|
||||
LP002684,Female,No,0,0,No,3400,0.0,95.0,360.0,1,Rural,0.0
|
||||
LP002689,Male,Yes,2,0,No,2192,1742.0,45.0,360.0,1,Semiurban,1.0
|
||||
LP002690,Male,No,0,1,No,2500,0.0,55.0,360.0,1,Semiurban,1.0
|
||||
LP002692,Male,Yes,3+,1,Yes,5677,1424.0,100.0,360.0,1,Rural,1.0
|
||||
LP002693,Male,Yes,2,1,Yes,7948,7166.0,480.0,360.0,1,Rural,1.0
|
||||
LP002697,Male,No,0,1,No,4680,2087.0,0.0,360.0,1,Semiurban,0.0
|
||||
LP002699,Male,Yes,2,1,Yes,17500,0.0,400.0,360.0,1,Rural,1.0
|
||||
LP002705,Male,Yes,0,1,No,3775,0.0,110.0,360.0,1,Semiurban,1.0
|
||||
LP002706,Male,Yes,1,0,No,5285,1430.0,161.0,360.0,0,Semiurban,1.0
|
||||
LP002714,Male,No,1,0,No,2679,1302.0,94.0,360.0,1,Semiurban,1.0
|
||||
LP002716,Male,No,0,0,No,6783,0.0,130.0,360.0,1,Semiurban,1.0
|
||||
LP002717,Male,Yes,0,1,No,1025,5500.0,216.0,360.0,0,Rural,1.0
|
||||
LP002720,Male,Yes,3+,1,No,4281,0.0,100.0,360.0,1,Urban,1.0
|
||||
LP002723,Male,No,2,1,No,3588,0.0,110.0,360.0,0,Rural,0.0
|
||||
LP002729,Male,No,1,1,No,11250,0.0,196.0,360.0,0,Semiurban,0.0
|
||||
LP002731,Female,No,0,0,Yes,18165,0.0,125.0,360.0,1,Urban,1.0
|
||||
LP002732,Male,No,0,0,,2550,2042.0,126.0,360.0,1,Rural,1.0
|
||||
LP002734,Male,Yes,0,1,No,6133,3906.0,324.0,360.0,1,Urban,1.0
|
||||
LP002738,Male,No,2,1,No,3617,0.0,107.0,360.0,1,Semiurban,1.0
|
||||
LP002739,Male,Yes,0,0,No,2917,536.0,66.0,360.0,1,Rural,0.0
|
||||
LP002740,Male,Yes,3+,1,No,6417,0.0,157.0,180.0,1,Rural,1.0
|
||||
LP002741,Female,Yes,1,1,No,4608,2845.0,140.0,180.0,1,Semiurban,1.0
|
||||
LP002743,Female,No,0,1,No,2138,0.0,99.0,360.0,0,Semiurban,0.0
|
||||
LP002753,Female,No,1,1,,3652,0.0,95.0,360.0,1,Semiurban,1.0
|
||||
LP002755,Male,Yes,1,0,No,2239,2524.0,128.0,360.0,1,Urban,1.0
|
||||
LP002757,Female,Yes,0,0,No,3017,663.0,102.0,360.0,0,Semiurban,1.0
|
||||
LP002767,Male,Yes,0,1,No,2768,1950.0,155.0,360.0,1,Rural,1.0
|
||||
LP002768,Male,No,0,0,No,3358,0.0,80.0,36.0,1,Semiurban,0.0
|
||||
LP002772,Male,No,0,1,No,2526,1783.0,145.0,360.0,1,Rural,1.0
|
||||
LP002776,Female,No,0,1,No,5000,0.0,103.0,360.0,0,Semiurban,0.0
|
||||
LP002777,Male,Yes,0,1,No,2785,2016.0,110.0,360.0,1,Rural,1.0
|
||||
LP002778,Male,Yes,2,1,Yes,6633,0.0,0.0,360.0,0,Rural,0.0
|
||||
LP002784,Male,Yes,1,0,No,2492,2375.0,0.0,360.0,1,Rural,1.0
|
||||
LP002785,Male,Yes,1,1,No,3333,3250.0,158.0,360.0,1,Urban,1.0
|
||||
LP002788,Male,Yes,0,0,No,2454,2333.0,181.0,360.0,0,Urban,0.0
|
||||
LP002789,Male,Yes,0,1,No,3593,4266.0,132.0,180.0,0,Rural,0.0
|
||||
LP002792,Male,Yes,1,1,No,5468,1032.0,26.0,360.0,1,Semiurban,1.0
|
||||
LP002794,Female,No,0,1,No,2667,1625.0,84.0,360.0,0,Urban,1.0
|
||||
LP002795,Male,Yes,3+,1,Yes,10139,0.0,260.0,360.0,1,Semiurban,1.0
|
||||
LP002798,Male,Yes,0,1,No,3887,2669.0,162.0,360.0,1,Semiurban,1.0
|
||||
LP002804,Female,Yes,0,1,No,4180,2306.0,182.0,360.0,1,Semiurban,1.0
|
||||
LP002807,Male,Yes,2,0,No,3675,242.0,108.0,360.0,1,Semiurban,1.0
|
||||
LP002813,Female,Yes,1,1,Yes,19484,0.0,600.0,360.0,1,Semiurban,1.0
|
||||
LP002820,Male,Yes,0,1,No,5923,2054.0,211.0,360.0,1,Rural,1.0
|
||||
LP002821,Male,No,0,0,Yes,5800,0.0,132.0,360.0,1,Semiurban,1.0
|
||||
LP002832,Male,Yes,2,1,No,8799,0.0,258.0,360.0,0,Urban,0.0
|
||||
LP002833,Male,Yes,0,0,No,4467,0.0,120.0,360.0,0,Rural,1.0
|
||||
LP002836,Male,No,0,1,No,3333,0.0,70.0,360.0,1,Urban,1.0
|
||||
LP002837,Male,Yes,3+,1,No,3400,2500.0,123.0,360.0,0,Rural,0.0
|
||||
LP002840,Female,No,0,1,No,2378,0.0,9.0,360.0,1,Urban,0.0
|
||||
LP002841,Male,Yes,0,1,No,3166,2064.0,104.0,360.0,0,Urban,0.0
|
||||
LP002842,Male,Yes,1,1,No,3417,1750.0,186.0,360.0,1,Urban,1.0
|
||||
LP002847,Male,Yes,,1,No,5116,1451.0,165.0,360.0,0,Urban,0.0
|
||||
LP002855,Male,Yes,2,1,No,16666,0.0,275.0,360.0,1,Urban,1.0
|
||||
LP002862,Male,Yes,2,0,No,6125,1625.0,187.0,480.0,1,Semiurban,0.0
|
||||
LP002863,Male,Yes,3+,1,No,6406,0.0,150.0,360.0,1,Semiurban,0.0
|
||||
LP002868,Male,Yes,2,1,No,3159,461.0,108.0,84.0,1,Urban,1.0
|
||||
LP002872,,Yes,0,1,No,3087,2210.0,136.0,360.0,0,Semiurban,0.0
|
||||
LP002874,Male,No,0,1,No,3229,2739.0,110.0,360.0,1,Urban,1.0
|
||||
LP002877,Male,Yes,1,1,No,1782,2232.0,107.0,360.0,1,Rural,1.0
|
||||
LP002888,Male,No,0,1,,3182,2917.0,161.0,360.0,1,Urban,1.0
|
||||
LP002892,Male,Yes,2,1,No,6540,0.0,205.0,360.0,1,Semiurban,1.0
|
||||
LP002893,Male,No,0,1,No,1836,33837.0,90.0,360.0,1,Urban,0.0
|
||||
LP002894,Female,Yes,0,1,No,3166,0.0,36.0,360.0,1,Semiurban,1.0
|
||||
LP002898,Male,Yes,1,1,No,1880,0.0,61.0,360.0,0,Rural,0.0
|
||||
LP002911,Male,Yes,1,1,No,2787,1917.0,146.0,360.0,0,Rural,0.0
|
||||
LP002912,Male,Yes,1,1,No,4283,3000.0,172.0,84.0,1,Rural,0.0
|
||||
LP002916,Male,Yes,0,1,No,2297,1522.0,104.0,360.0,1,Urban,1.0
|
||||
LP002917,Female,No,0,0,No,2165,0.0,70.0,360.0,1,Semiurban,1.0
|
||||
LP002925,,No,0,1,No,4750,0.0,94.0,360.0,1,Semiurban,1.0
|
||||
LP002926,Male,Yes,2,1,Yes,2726,0.0,106.0,360.0,0,Semiurban,0.0
|
||||
LP002928,Male,Yes,0,1,No,3000,3416.0,56.0,180.0,1,Semiurban,1.0
|
||||
LP002931,Male,Yes,2,1,Yes,6000,0.0,205.0,240.0,1,Semiurban,0.0
|
||||
LP002933,,No,3+,1,Yes,9357,0.0,292.0,360.0,1,Semiurban,1.0
|
||||
LP002936,Male,Yes,0,1,No,3859,3300.0,142.0,180.0,1,Rural,1.0
|
||||
LP002938,Male,Yes,0,1,Yes,16120,0.0,260.0,360.0,1,Urban,1.0
|
||||
LP002940,Male,No,0,0,No,3833,0.0,110.0,360.0,1,Rural,1.0
|
||||
LP002941,Male,Yes,2,0,Yes,6383,1000.0,187.0,360.0,1,Rural,0.0
|
||||
LP002943,Male,No,,1,No,2987,0.0,88.0,360.0,0,Semiurban,0.0
|
||||
LP002945,Male,Yes,0,1,Yes,9963,0.0,180.0,360.0,1,Rural,1.0
|
||||
LP002948,Male,Yes,2,1,No,5780,0.0,192.0,360.0,1,Urban,1.0
|
||||
LP002949,Female,No,3+,1,,416,41667.0,350.0,180.0,0,Urban,0.0
|
||||
LP002950,Male,Yes,0,0,,2894,2792.0,155.0,360.0,1,Rural,1.0
|
||||
LP002953,Male,Yes,3+,1,No,5703,0.0,128.0,360.0,1,Urban,1.0
|
||||
LP002958,Male,No,0,1,No,3676,4301.0,172.0,360.0,1,Rural,1.0
|
||||
LP002959,Female,Yes,1,1,No,12000,0.0,496.0,360.0,1,Semiurban,1.0
|
||||
LP002960,Male,Yes,0,0,No,2400,3800.0,0.0,180.0,1,Urban,0.0
|
||||
LP002961,Male,Yes,1,1,No,3400,2500.0,173.0,360.0,1,Semiurban,1.0
|
||||
LP002964,Male,Yes,2,0,No,3987,1411.0,157.0,360.0,1,Rural,1.0
|
||||
LP002974,Male,Yes,0,1,No,3232,1950.0,108.0,360.0,1,Rural,1.0
|
||||
LP002978,Female,No,0,1,No,2900,0.0,71.0,360.0,1,Rural,1.0
|
||||
LP002979,Male,Yes,3+,1,No,4106,0.0,40.0,180.0,1,Rural,1.0
|
||||
LP002983,Male,Yes,1,1,No,8072,240.0,253.0,360.0,1,Urban,1.0
|
||||
LP002984,Male,Yes,2,1,No,7583,0.0,187.0,360.0,1,Urban,1.0
|
||||
LP002990,Female,No,0,1,Yes,4583,0.0,133.0,360.0,0,Semiurban,0.0
|
||||
|
BIN
abanin_daniil_lab_3/result.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
40
alexandrov_dmitrii_lab_4/lab4.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from scipy.cluster import hierarchy
|
||||
import pandas as pd
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
|
||||
def start():
|
||||
data = pd.read_csv('sberbank_data.csv', index_col='id')
|
||||
x = data[['full_sq', 'price_doc']]
|
||||
plt.figure(1, figsize=(16, 9))
|
||||
plt.title('Дендрограмма кластеризации цен')
|
||||
|
||||
prices = [0, 0, 0, 0]
|
||||
for ind, val in x.iterrows():
|
||||
val = val['price_doc'] / val['full_sq']
|
||||
if val < 100000:
|
||||
prices[0] = prices[0] + 1
|
||||
elif val < 300000:
|
||||
prices[1] = prices[1] + 1
|
||||
elif val < 500000:
|
||||
prices[2] = prices[2] + 1
|
||||
else:
|
||||
prices[3] = prices[3] + 1
|
||||
print('Результаты подчсёта ручного распределения:')
|
||||
print('низких цен:'+str(prices[0]))
|
||||
print('средних цен:'+str(prices[1]))
|
||||
print('высоких цен:'+str(prices[2]))
|
||||
print('премиальных цен:'+str(prices[3]))
|
||||
|
||||
hierarchy.dendrogram(hierarchy.linkage(x, method='single'),
|
||||
truncate_mode='lastp',
|
||||
p=15,
|
||||
orientation='top',
|
||||
leaf_rotation=90,
|
||||
leaf_font_size=8,
|
||||
show_contracted=True)
|
||||
|
||||
plt.show()
|
||||
|
||||
|
||||
start()
|
||||
27
alexandrov_dmitrii_lab_4/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
### Задание
|
||||
Использовать метод кластеризации по варианту для выбранных данных по варианту, самостоятельно сформулировав задачу.
|
||||
Интерпретировать результаты и оценить, насколько хорошо он подходит для
|
||||
решения сформулированной вами задачи.
|
||||
|
||||
Вариант 1: dendrogram
|
||||
|
||||
Была сформулирована следующая задача: необходимо разбить записи на кластеры в зависимости от цен и площади.
|
||||
|
||||
### Запуск программы
|
||||
Файл lab4.py содержит и запускает программу, аргументов и настройки ~~вроде~~ не требует.
|
||||
|
||||
### Описание программы
|
||||
Программа считывает цены и площади из файла статистики сбербанка по рынку недвижимости.
|
||||
Поскольку по заданию требуется оценить машинную кластеризацию, для сравнения программа подсчитывает и выводит в консоль количество записей в каждом из выделенных вручную классов цен.
|
||||
Далее программа кластеризует данные с помощью алгоритма ближайших точек (на другие памяти нету) и выводит дендрограмму на основе кластеризации.
|
||||
Выводимая дендрограмма ограничена 15 последними (верхними) объединениями.
|
||||
|
||||
### Результаты тестирования
|
||||
По результатам тестирования, можно сказать следующее:
|
||||
* Последние объединения в дендрограмме - объединения выбросов с 'основным' кластером, то есть 10-20 записей с кластером с более чем 28000 записями.
|
||||
* Это правильная информация, так как ручная классификация показывает, что премиальных (аномально больших) цен как раз порядка 20, остальные относятся к другим классам.
|
||||
* Поскольку в имеющихся данных нет ограничений по ценам, выбросы аномально высоких цен при использовании данного алгоритма формируют отдельные кластеры, что негативно сказывается на наглядности.
|
||||
* Ценовое ограничение также не дало положительнх результатов: снова сформировался 'основной' кластер, с которым последними объединялись отдельные значения.
|
||||
* Значит, сам алгоритм не эффективен.
|
||||
|
||||
Итого: Алгоритм ближайших точек слишком чувствителен к выбросам, поэтому можно признать его неэффективным для необработанных данных. Дендрограмма как средство визуализации скорее уступает по наглядности диаграмме рассеяния.
|
||||
28896
alexandrov_dmitrii_lab_4/sberbank_data.csv
Normal file
48
alexandrov_dmitrii_lab_5/lab5.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn import metrics
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.pipeline import Pipeline
|
||||
import pandas as pd
|
||||
|
||||
|
||||
def start():
|
||||
data = pd.read_csv('sberbank_data.csv', index_col='id')
|
||||
x = data[['timestamp', 'full_sq', 'floor', 'max_floor', 'build_year', 'num_room', 'material', 'kremlin_km']]
|
||||
y = data[['price_doc']]
|
||||
|
||||
x = x.replace('NA', 0)
|
||||
x.fillna(0, inplace=True)
|
||||
|
||||
col_date = []
|
||||
|
||||
for val in x['timestamp']:
|
||||
col_date.append(val.split('-', 1)[0])
|
||||
|
||||
x = x.drop(columns='timestamp')
|
||||
x['timestamp'] = col_date
|
||||
|
||||
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.01, random_state=42)
|
||||
|
||||
poly = Pipeline([('poly', PolynomialFeatures(degree=3)),
|
||||
('linear', LinearRegression())])
|
||||
poly.fit(x_train, y_train)
|
||||
|
||||
y_mean = y['price_doc'].mean()
|
||||
y_predicted = poly.predict(x_test)
|
||||
for i, n in enumerate(y_predicted):
|
||||
if n < 10000:
|
||||
y_predicted[i] = y_mean
|
||||
|
||||
print('Оценка обучения:')
|
||||
print(metrics.r2_score(y_test, y_predicted))
|
||||
|
||||
plt.figure(1, figsize=(16, 9))
|
||||
plt.title('Сравнение результатов обучения')
|
||||
plt.scatter(x=[i for i in range(len(y_test))], y=y_test, c='g', s=5)
|
||||
plt.scatter(x=[i for i in range(len(y_test))], y=y_predicted, c='r', s=5)
|
||||
plt.show()
|
||||
|
||||
|
||||
start()
|
||||
36
alexandrov_dmitrii_lab_5/readme.md
Normal file
@@ -0,0 +1,36 @@
|
||||
### Задание
|
||||
Использовать регрессию по варианту для выбранных данных по варианту, самостоятельно сформулировав задачу.
|
||||
Интерпретировать результаты и оценить, насколько хорошо она подходит для
|
||||
решения сформулированной вами задачи.
|
||||
|
||||
Вариант 1: полиномиальная регрессия
|
||||
|
||||
Была сформулирована следующая задача: необходимо предсказывать стоимость жилья по избранным признакам при помощи регрессии.
|
||||
|
||||
### Запуск программы
|
||||
Файл lab5.py содержит и запускает программу, аргументов и настройки ~~вроде~~ не требует.
|
||||
|
||||
### Описание программы
|
||||
Программа считывает цены на жильё как выходные данные и следующие данные как входные: год размещения объявления, площадь, этаж, количество этажей, год постройки, количество комнат, материал, расстояние до кремля (условного центра).
|
||||
Далее она обрабатывает данные (цифровизирует нулевые данные), оставляет только год объявления.
|
||||
|
||||
После обработки программа делит данные на 99% обучающего материала и 1% тестового и обучает модель полиномиальной регрессии со степенью 3.
|
||||
Далее модель генерирует набор предсказаний на основе тестовых входных данных. Эти предсказания обрабатываются: убираются отрицательные цены.
|
||||
|
||||
Далее программа оценивает предсказания по коэффициенту детерминации и выводит результат в консоль. А также показывает диаграммы рассеяния для действительных (зелёные точки) и предсказанных (красные точки) цен.
|
||||
|
||||
### Результаты тестирования
|
||||
По результатам тестирования, можно сказать следующее:
|
||||
* Полные данные алгоритм обрабатывает плохо, поэтому было необходимо было выбирать наиболее значимые признаки.
|
||||
* В зависимости от данных, разные степени регрессии дают разный результат. В общем случае обычная линейная регрессия давала коэффициент около 0.3. При добавлении же степеней полиномиальная регрессия выдавала выбросные значения цен: например, -300 миллионов, что негативно сказывалось на результате.
|
||||
* Для того, чтобы явно выбросные результаты не портили оценку (коэффициент соответственно становился -1000) эти выбросные значения заменялись на средние.
|
||||
* Опытным путём было найдено, что наилучшие результаты (коэффициент 0.54) показывает степень 3.
|
||||
* Результат 0.54 - наилучший результат - можно назвать неприемлимым: только в половине случаев предсказанная цена условно похожа на действительную.
|
||||
* Возможно, включением большего количества признаков и использованием других моделей (линейная, например, не давала выбросов) удастся решить проблему.
|
||||
|
||||
Пример консольного вывода:
|
||||
>Оценка обучения:
|
||||
>
|
||||
>0.5390648784908953
|
||||
|
||||
Итого: Алгоритм можно привести к некоторой эффективности, однако для конкретно этих данных он не подходит. Лучше попытаться найти другую модель регрессии.
|
||||
28896
alexandrov_dmitrii_lab_5/sberbank_data.csv
Normal file
115
antonov_dmitry_lab_7/README.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Лаб 7 RNN
|
||||
|
||||
Выбрать художественный текст (четные варианты – русскоязычный,
|
||||
нечетные – англоязычный) и обучить на нем рекуррентную нейронную сеть
|
||||
для решения задачи генерации. Подобрать архитектуру и параметры так,
|
||||
чтобы приблизиться к максимально осмысленному результату. Далее
|
||||
разбиться на пары четный-нечетный вариант, обменяться разработанными
|
||||
сетями и проверить, как архитектура товарища справляется с вашим текстом.
|
||||
В завершении подобрать компромиссную архитектуру, справляющуюся
|
||||
достаточно хорошо с обоими видами текстов.
|
||||
|
||||
# Вариант 3
|
||||
|
||||
Рекуррентная нейронная сеть и задача
|
||||
генерации текста
|
||||
|
||||
# Запуск
|
||||
|
||||
Выполнением скрипта файла (вывод в консоль).
|
||||
|
||||
# Описание модели:
|
||||
|
||||
Использованы библиотеки:
|
||||
* numpy (np): популярная библиотека для научных вычислений.
|
||||
* tensorflow (tf): библиотека для тренировки нейросетей.
|
||||
* Sequential: тип Keras модель которая позволяет создавать нейросети слой за слоем.
|
||||
* Embedding, LSTM, Dense: различные типы слоев в нейросетях.
|
||||
* Tokenizer: класс для конвертации слов в числовой понятный для нейросети формат.
|
||||
<p></p>
|
||||
Каждая строка текста переводится в числа с помощью Tokernizer.
|
||||
Класс Tokenizer в Keras - это утилита обработки текста, которая преобразует текст в
|
||||
последовательность целых чисел. Он присваивает уникальное целое число (индекс) каждому слову
|
||||
в тексте и создает словарь, который сопоставляет каждое слово с соответствующим индексом.
|
||||
Это позволяет вам работать с текстовыми данными в формате, который может быть передан в нейронную сеть.
|
||||
Все это записывается в input_sequences.
|
||||
|
||||
Строим RNN модель используя Keras:
|
||||
|
||||
* Embedding: Этот слой превращает числа в векторы плотности фиксированного размера. Так же известного
|
||||
как "word embeddings". Вложения слов - это плотные векторные представления слов в непрерывном
|
||||
векторном пространстве.Они позволяют нейронной сети изучать и понимать взаимосвязи между словами
|
||||
на основе их контекста в содержании текста.
|
||||
* LSTM: это тип рекуррентной нейронной сети (RNN), которая предназначена для обработки
|
||||
зависимостей в последовательностях.
|
||||
* Dense: полносвязный слой с множеством нейронов, нейронов столько же сколько и уникальных слов.
|
||||
Он выводит вероятность следующего слова.
|
||||
|
||||
* Модель обучаем на разном количестве эпох, по умолчанию epochs = 100 (итераций по всему набору данных).
|
||||
|
||||
Определеяем функцию generate_text которая принимает стартовое слово, а также, число слов для генерации.
|
||||
Модель генерирует текст путем многократного предсказания следующего слова на основе предыдущих слов в
|
||||
начальном тексте.
|
||||
|
||||
* В конце мы получаем сгенерированную на основе текста последовательность.
|
||||
|
||||
# Задача генерации англоязычного текста
|
||||
На вход подаем историю с похожими повторяющимися слова. Историю сохраняем в файл.
|
||||
Задача проверить насколько сеть не станет повторять текст, а будет действительно генерировать
|
||||
относительно новый текст.
|
||||
|
||||
# Результаты
|
||||
Тестируется английский текст, приложенный в репозитории.
|
||||
* на 50 эпохах ответ на I want
|
||||
* I want to soar high up in the sky like to glide through the clouds feeling the wind beneath my wings i want to fly i want to fly i want to fly i want to fly i want to fly i want to fly i want to fly i want to
|
||||
* на 100 эпох ответ на I want
|
||||
* I want to fly i want to soar high up in the sky like a bird to glide through the clouds feeling the wind beneath my wings i want to fly i want to fly i want to spread my wings and soar into the open sky to glide far above the
|
||||
* на 150 эпохах ответ на I want
|
||||
* I want to fly i want to spread my wings and soar into the open sky to glide far above the earth unbounded by gravity i want to fly i want to fly i want to fly i want to soar high up in the sky like a bird to glide through
|
||||
* на 220 эпохах ответ на I want
|
||||
* I want to fly i want to soar high up in the sky like a bird to glide through the clouds feeling the wind beneath my wings i want to fly i want to fly i want to fly i want to fly i want to fly i want to fly i
|
||||
|
||||
* На 220 эпохах результаты хуже, это произошло скорее всего из-за переобучения(грубый повтор).
|
||||
* На 50 эпохах нейронная сеть плохо обучена (из 1 места плюс повтор)
|
||||
* На 100 эпохах средний результат (из 2 мест)
|
||||
* На 150 эпохах нейронная сеть показывает наилучший результат (из 3 разных мест без повтора)
|
||||
|
||||
Так же модель работает и на русском тексте. Вот что сгенерировала модель на 150 эпохах.
|
||||
Предложения взяты из разных мест и выглядят осмысленно.
|
||||
"Я хочу летать потому что в этом заложено желание преодолевать границы хочу чувствовать себя
|
||||
свободным словно ветер несущим меня к новым приключениям я хочу летать и продолжать этот бескрайний
|
||||
полет вперед ибо в этом полете заключена вся суть моего существования существования существования
|
||||
существования существования трудности трудности трудности неважными хочу летать потому что."
|
||||
|
||||
Чем больше текст мы берем, тем более интересные результаты получаем, но моих вычислительных мощностей уже не хватит.
|
||||
Так же чем больше прогонов, тем лучше модель, но тоже не до бесконечности можно получить хороший результат.
|
||||
<p>
|
||||
<div>Обучение</div>
|
||||
<img src="screens/img_2.png" width="650" title="Обучение">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<div>Результат</div>
|
||||
<img src="screens/img_3.png" width="650" title="Результат">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<div>Обучение 1</div>
|
||||
<img src="screens/step1.png" width="650" title="Обучение 1">
|
||||
</p>
|
||||
<p>
|
||||
<div>Обучение 2</div>
|
||||
<img src="screens/step2.png" width="650" title="Обучение 2">
|
||||
</p>
|
||||
<p>
|
||||
<div>Обучение 3</div>
|
||||
<img src="screens/step3.png" width="650" title="Обучение 3">
|
||||
</p>
|
||||
<p>
|
||||
<div>Обучение 4</div>
|
||||
<img src="screens/step4.png" width="650" title="Обучение 4">
|
||||
</p>
|
||||
<p>
|
||||
<div>Обучение 5</div>
|
||||
<img src="screens/step5.png" width="650" title="Обучение 5">
|
||||
</p>
|
||||
55
antonov_dmitry_lab_7/lab7.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import numpy as np
|
||||
from keras.models import Sequential
|
||||
from keras.layers import Embedding, LSTM, Dense
|
||||
from keras.preprocessing.text import Tokenizer
|
||||
from keras_preprocessing.sequence import pad_sequences
|
||||
|
||||
# загрузка текста
|
||||
with open('rus.txt', encoding='utf-8') as file:
|
||||
text = file.read()
|
||||
|
||||
tokenizer = Tokenizer()
|
||||
tokenizer.fit_on_texts([text])
|
||||
total_words = len(tokenizer.word_index) + 1
|
||||
|
||||
input_sequences = []
|
||||
for line in text.split('\n'):
|
||||
token_list = tokenizer.texts_to_sequences([line])[0]
|
||||
for i in range(1, len(token_list)):
|
||||
n_gram_sequence = token_list[:i + 1]
|
||||
input_sequences.append(n_gram_sequence)
|
||||
|
||||
max_sequence_length = max([len(x) for x in input_sequences])
|
||||
input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_length, padding='pre')
|
||||
|
||||
predictors, labels = input_sequences[:, :-1], input_sequences[:, -1]
|
||||
|
||||
# создание RNN модели
|
||||
model = Sequential()
|
||||
model.add(Embedding(total_words, 100, input_length=max_sequence_length - 1))
|
||||
model.add(LSTM(150))
|
||||
model.add(Dense(total_words, activation='softmax'))
|
||||
|
||||
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
||||
|
||||
# тренировка модели
|
||||
model.fit(predictors, labels, epochs=150, verbose=1)
|
||||
|
||||
|
||||
# генерация текста на основе модели
|
||||
def generate_text(seed_text, next_words, model, max_sequence_length):
|
||||
for _ in range(next_words):
|
||||
token_list = tokenizer.texts_to_sequences([seed_text])[0]
|
||||
token_list = pad_sequences([token_list], maxlen=max_sequence_length - 1, padding='pre')
|
||||
predicted = np.argmax(model.predict(token_list), axis=-1)
|
||||
output_word = ""
|
||||
for word, index in tokenizer.word_index.items():
|
||||
if index == predicted:
|
||||
output_word = word
|
||||
break
|
||||
seed_text += " " + output_word
|
||||
return seed_text
|
||||
|
||||
|
||||
generated_text = generate_text("Я хочу", 50, model, max_sequence_length)
|
||||
print(generated_text)
|
||||
BIN
antonov_dmitry_lab_7/my_model.h5
Normal file
11
antonov_dmitry_lab_7/rus.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Я хочу летать. Почувствовать ветер в лицо, свободно парить в небесах. Я хочу летать, словно птица, освободившись от земных оков. Летать, словно орел, покоряя небесные просторы. Я хочу летать, чувствовать каждый момент поднятия в воздух, каждый поворот, каждое крыло, взмахнувшее в танце с аэродинамикой.
|
||||
|
||||
Я хочу летать над горами, смотреть на вершины, которые кажутся такими далекими с земли. Хочу летать над океанами, наблюдая за волнами, встречая закаты, окрашивающие водную гладь в огонь. Я хочу летать над городами, где жизнь бурлит своим ритмом, а улицы выглядят как мозаика, расстилающаяся под ногами.
|
||||
|
||||
Я хочу летать, ощущать тот подъем, когда ты понимаешь, что земля осталась позади, а ты – свободен, как никогда. Я хочу летать и видеть этот мир с высоты, где все проблемы кажутся такими маленькими и неважными. Хочу летать и чувствовать себя частью этого огромного космического танца, где звезды танцуют свои вечерние вальсы.
|
||||
|
||||
Я хочу летать, несмотря ни на что, преодолевая любые преграды. Хочу летать, потому что в этом чувствую свое настоящее "я". Летать – значит освобождаться от гравитации рутины, подниматься над повседневностью, смотреть на мир с высоты своей мечты.
|
||||
|
||||
Я хочу летать, потому что в этом заключена свобода души. Хочу ощутить, как воздух обволакивает меня, как каждая клетка моего тела ощущает эту свободу. Хочу летать, потому что это моя мечта, которая дает мне силы двигаться вперед, преодолевая все трудности.
|
||||
|
||||
Я хочу летать, потому что в этом заложено желание преодолевать границы. Хочу чувствовать себя свободным, словно ветер, несущим меня к новым приключениям. Я хочу летать и продолжать этот бескрайний полет вперед, ибо в этом полете заключена вся суть моего существования.
|
||||
BIN
antonov_dmitry_lab_7/screens/img.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
antonov_dmitry_lab_7/screens/img_1.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
antonov_dmitry_lab_7/screens/img_2.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
antonov_dmitry_lab_7/screens/img_3.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
antonov_dmitry_lab_7/screens/img_4.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
antonov_dmitry_lab_7/screens/step1.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
antonov_dmitry_lab_7/screens/step2.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
antonov_dmitry_lab_7/screens/step3.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
antonov_dmitry_lab_7/screens/step4.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
antonov_dmitry_lab_7/screens/step5.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
16
antonov_dmitry_lab_7/small.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
I want to fly. I want to soar high up in the sky like a bird. To glide through the clouds, feeling the wind beneath my wings. I want to fly.
|
||||
|
||||
I imagine what it would be like, to be able to spread my arms and take off into the endless blue. To swoop and dive and twirl through the air unencumbered by gravity's pull. I want to fly.
|
||||
|
||||
I watch the birds outside my window, floating effortlessly on the breeze. How I wish I could join them up there. To break free of the bounds of this earth and taste the freedom of flight. I want to fly.
|
||||
|
||||
Over and over I dream of flying. I flap my arms but remain stuck to the ground. Still I gaze up hopefully at the sky. One day, I tell myself. One day I will fly. I want to fly.
|
||||
I want to fly. I want to spread my wings and soar into the open sky. To glide far above the earth unbounded by gravity. I want to fly.
|
||||
|
||||
Ever since I was a child I've dreamed of flying. I would flap my arms trying in vain to take off. I envied the birds and their gift of flight. On windy days, I'd run with the breeze, hoping it would lift me up. But my feet stayed planted. Still my desire to fly remained.
|
||||
|
||||
As I grew up, my dreams of flying never left. I'd gaze out plane windows high above the earth and ache to sprout wings. I'd watch birds for hours wishing I could join their effortless flight. At night I'd have vivid dreams of gliding among the clouds. Then I'd awake still earthbound and sigh. My longing to fly unchanged.
|
||||
|
||||
I want to know what it feels like to swoop and dive through the air. To loop and twirl on the wind currents with ease. To soar untethered by gravity's grip. But I'm trapped on the ground, wings useless and weighted. Still I stare upwards hoping. Still I imagine what could be. Still I want to fly.
|
||||
|
||||
They say it's impossible, that humans aren't meant for flight. But I refuse to let go of this dream. I gaze up, envying the way the birds own the sky while my feet stay planted. I flap and I hope. And still I want to fly.
|
||||
109
arutunyan_dmitry_lab_2/README.md
Normal file
@@ -0,0 +1,109 @@
|
||||
|
||||
## Лабораторная работа 2. Вариант 4.
|
||||
### Задание
|
||||
Выполнить ранжирование признаков. Отобразить получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку. Провести анализ получившихся результатов. Какие четыре признака оказались самыми важными по среднему значению?
|
||||
|
||||
Модели:
|
||||
|
||||
- Гребневая регрессия `Ridge`,
|
||||
- Случайное Лассо `RandomizedLasso`,
|
||||
- Рекурсивное сокращение признаков `Recursive Feature Elimination – RFE`
|
||||
|
||||
> **Warning**
|
||||
>
|
||||
> Модель "случайное лассо" `RandomizedLasso` была признана устаревшей в бибилотеке `scikit` версии 0.20. Её безболезненной заменой назван регрессор случайного леса `RandomForestRegressor`. Он будет использоваться в данной лабораторной вместо устаревшей функции.
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `numpy`, используемая для обработки массивов данных и вычислений
|
||||
- Библиотека `sklearn` - большой набор функционала для анализа данных. Из неё были использованы инструменты:
|
||||
- `LinearRegression` - инструмент работы с моделью "Линейная регрессия"
|
||||
- `Ridge` - инструмент работы с моделью "Гребневая регрессия"
|
||||
- `RFE` - инструмент оценки важности признаков "Рекурсивное сокращение признаков"
|
||||
- `RandomForestRegressor` - инструмент работы с моделью "Регрессор случайного леса"
|
||||
- `MinMaxScaler` - инструмент масштабирования значений в заданный диапазон
|
||||
|
||||
### Описание работы
|
||||
Программа генерирует данные для обучения моделей. Сначала генерируются признаки в количестве 14-ти штук, важность которых модели предстоит выявить.
|
||||
```python
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
```
|
||||
Затем задаётся функция зависимости выходных параметров от входных, представляющая собой регриссионную проблему Фридмана.
|
||||
```python
|
||||
Y = (10 * np.sin(np.pi * X[:, 0] * X[:, 1]) + 20 * (X[:, 2] - .5) ** 2 +
|
||||
10 * X[:, 3] + 5 * X[:, 4] ** 5 + np.random.normal(0, 1))
|
||||
```
|
||||
После чего, задаются зависимости переменных `x11 x12 x13 x14` от переменных `x1 x2 x3 x4`.
|
||||
```python
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
```
|
||||
Первая группа переменных должна быть обозначена моделями как наименее значимая.
|
||||
|
||||
#### Работа с моделями
|
||||
Первая модель `Ridge` - модель гребневой регрессии.
|
||||
```python
|
||||
ridge = Ridge(alpha=1)
|
||||
ridge.fit(X, Y)
|
||||
```
|
||||
Данная модель не предоставляет прямого способа оценки важности признаков, так как она использует линейную комбинацию всех признаков с коэффициентами, которые оптимизируются во время обучения модели. Можно лишь оценить относительную важность признаков на основе абсолютных значений коэффициентов, которые были найдены в процессе обучения. Получить данные коэфициенты от модели можно с помощью метода `.coef_`.
|
||||
|
||||
Вторая модель `RandomForestRegressor` - алгоритм ансамбля случайных деревьев решений. Он строит множество деревьев, каждое из которых обучается на случайной подвыборке данных и случайном подмножестве признаков.
|
||||
```python
|
||||
rfr = RandomForestRegressor()
|
||||
rfr.fit(X, Y)
|
||||
```
|
||||
Важность признаков в Random Forest Regressor определяется на основе того, как сильно каждый признак влияет на уменьшение неопределенности в предсказаниях модели. Для получения оценок важности в данной модели используется функция `.feature_importances_`.
|
||||
|
||||
Третий инструмент `Recursive Feature Elimination – RFE` - алгоритм отбора признаков, который используется для оценки и ранжирования признаков по их важности.
|
||||
```python
|
||||
lr = LinearRegression()
|
||||
lr.fit(X, Y)
|
||||
rfe = RFE(lr)
|
||||
rfe.fit(X,Y)
|
||||
```
|
||||
Оценка важности признаков в RFE происходит путем анализа, как изменяется производительность модели при удалении каждого признака. В зависимости от этого, каждый признак получает ранг. Массив рангов признаков извлекается функцией `.ranking_`
|
||||
|
||||
#### Нормализация оценок
|
||||
Модели `Ridge` и `RandomForestRegressor` рабботают по одинаковой логике вывода значимости оценок. В данных моделях оценки значимости параметров - веса значимости, которые они представляют для модели. Очевидно, что чем выше данный показатеь, тем более значимым является признак. Для нормализации оценок необходимо взять их по модулю и привести их к диапазону от 0 до 1.
|
||||
```python
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
```
|
||||
Инструмент `Recursive Feature Elimination – RFE` работает иначе. Класс выдает не веса при коэффициентах регрессии, а именно ранг для каждого признака. Так наиболее важные признаки будут иметь ранг – "1", а менее важные признаки ранг больше "1". Коэффициенты остальных моделей тем важнее, чем больше их абсолютное значение. Для нормализации таких рангов от 0 до 1, необходимо просто взять обратное число от величины ранга признака.
|
||||
```python
|
||||
new_ranks = [float(1 / x) for x in ranks]
|
||||
new_ranks = map(lambda x: round(x, 2), new_ranks)
|
||||
```
|
||||
|
||||
#### Оценка работы моделей
|
||||
Для оценки результатов выведем выявленные оценки значимости признаков каждой модели, а также средние оценки значимости признаков всех моделей.
|
||||
```
|
||||
Ridge
|
||||
[('x4', 1.0), ('x1', 0.98), ('x2', 0.8), ('x14', 0.61), ('x5', 0.54), ('x12', 0.39), ('x3', 0.25), ('x13', 0.19), ('x11', 0.16), ('x6', 0.08), ('x8', 0.07), ('x7', 0.02), ('x10', 0.02), ('x9', 0.0)]
|
||||
Recursive Feature Elimination
|
||||
[('x1', 1.0), ('x2', 1.0), ('x3', 1.0), ('x4', 1.0), ('x5', 1.0), ('x11', 1.0), ('x13', 1.0), ('x12', 0.5), ('x14', 0.33), ('x8', 0.25), ('x6', 0.2), ('x10', 0.17), ('x7', 0.14), ('x9', 0.12)]
|
||||
Random Forest Regression
|
||||
[('x14', 1.0), ('x2', 0.84), ('x4', 0.77), ('x1', 0.74), ('x11', 0.36), ('x12', 0.35), ('x5', 0.28), ('x3', 0.12), ('x13', 0.12), ('x6', 0.01), ('x7', 0.01), ('x8', 0.01), ('x9', 0.01), ('x10', 0.0)]
|
||||
Mean
|
||||
[('x4', 0.92), ('x1', 0.91), ('x2', 0.88), ('x14', 0.65), ('x5', 0.61), ('x11', 0.51), ('x3', 0.46), ('x13', 0.44), ('x12', 0.41), ('x8', 0.11), ('x6', 0.1), ('x7', 0.06), ('x10', 0.06), ('x9', 0.04)]
|
||||
|
||||
```
|
||||
- Модель `Ridge` верно выявила значимость признаков `x1, x2, x4, х5`, но потеряла значимый признак `x3` и ошибочно включила признак `x14` в значимые.
|
||||
- Модель `RandomForestRegressor` также верно выявила значимость признаков `x1, x2, x4`, но потеряла значимые признаки `x3, х5` и ошибочно включила признак `x14` в значимые.
|
||||
- Инсрумент `Recursive Feature Elimination – RFE` безошибочно выделил все значимые признаки `x1, x2, х3, x4, x5`, но ошибочно отметил признаки `x11, x13` как значимые.
|
||||
- В среднем значимыми признаками были верно выявлены `x1, x2, x4, х5`, но значимый признак `x3` был потерян, а признаки `x11, х14` были признаны ошибочно значимыми.
|
||||
|
||||
|
||||
### Вывод
|
||||
Хужё всех показала себя модель `RandomForestRegressor`, потеряв два значимых признака и добавив один лишний. Модель `Ridge`и инструмент `Recursive Feature Elimination – RFE` допустили по одной ошибке, однако последний не потерял ни одного значимого признака. Значимость в среднем получилась неудовлетворительна и выдала три ошибки, как и первая модель.
|
||||
|
||||
Исходя из этого, можно сделать вывод, что для ранжирования признаков лучше использовать специально созданные для этого инструменты по типу `Recursive Feature Elimination – RFE`, а не использовать коэфициенты признаков регрессионных моделей.
|
||||
69
arutunyan_dmitry_lab_2/main.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from operator import itemgetter
|
||||
import numpy as np
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.feature_selection import RFE
|
||||
from sklearn.linear_model import LinearRegression, Ridge
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
|
||||
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14)) # Генерируем исходные данные: 750 строк-наблюдений и 14 столбцов-признаков
|
||||
|
||||
Y = (10 * np.sin(np.pi * X[:, 0] * X[:, 1]) + 20 * (X[:, 2] - .5) ** 2 +
|
||||
10 * X[:, 3] + 5 * X[:, 4] ** 5 + np.random.normal(0, 1)) # Задаем функцию-выход: регрессионную проблему Фридмана
|
||||
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4)) # Добавляем зависимость признаков
|
||||
|
||||
ridge = Ridge(alpha=1) # Создаём модель гребневой регрессии и обучаем её
|
||||
ridge.fit(X, Y)
|
||||
|
||||
lr = LinearRegression() # Создаём модель линейной регрессии и обучаем её
|
||||
lr.fit(X, Y)
|
||||
rfe = RFE(lr) # На основе линейной модели выполняем рекурсивное сокращение признаков
|
||||
rfe.fit(X,Y)
|
||||
|
||||
rfr = RandomForestRegressor() # Создаём и обучаем регрессор случайного леса (используется вместо устаревшего рандомизированного лассо)
|
||||
rfr.fit(X, Y)
|
||||
|
||||
|
||||
def rank_ridge_rfr_to_dict(ranks, names): # Метод нормализации оценок важности для модели гребневой регрессии и регрессора случайного леса
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
|
||||
def rank_rfe_to_dict(ranks, names): # Метод нормализации оценок важности для модели рекурсивного сокращения признаков
|
||||
new_ranks = [float(1 / x) for x in ranks]
|
||||
new_ranks = map(lambda x: round(x, 2), new_ranks)
|
||||
return dict(zip(names, new_ranks))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
names = ["x%s" % i for i in range(1, 15)]
|
||||
ranks = dict()
|
||||
|
||||
ranks["Ridge"] = rank_ridge_rfr_to_dict(ridge.coef_, names)
|
||||
ranks["Recursive Feature Elimination"] = rank_rfe_to_dict(rfe.ranking_, names)
|
||||
ranks["Random Forest Regression"] = rank_ridge_rfr_to_dict(rfr.feature_importances_, names)
|
||||
|
||||
for key, value in ranks.items(): # Вывод нормализованных оценок важности признаков каждой модели
|
||||
ranks[key] = sorted(value.items(), key=itemgetter(1), reverse=True)
|
||||
for key, value in ranks.items():
|
||||
print(key)
|
||||
print(value)
|
||||
|
||||
mean = {} # Нахождение средних значений оценок важности по 3м моделям
|
||||
for key, value in ranks.items():
|
||||
for item in value:
|
||||
if item[0] not in mean:
|
||||
mean[item[0]] = 0
|
||||
mean[item[0]] += item[1]
|
||||
for key, value in mean.items():
|
||||
res = value / len(ranks)
|
||||
mean[key] = round(res, 2)
|
||||
mean = sorted(mean.items(), key=itemgetter(1), reverse=True)
|
||||
print("Mean")
|
||||
print(mean)
|
||||
BIN
arutunyan_dmitry_lab_3/FullParam.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
arutunyan_dmitry_lab_3/ImpParam.png
Normal file
|
After Width: | Height: | Size: 178 KiB |
170
arutunyan_dmitry_lab_3/README.md
Normal file
@@ -0,0 +1,170 @@
|
||||
|
||||
## Лабораторная работа 3. Вариант 4.
|
||||
### Задание
|
||||
Выполнить ранжирование признаков и решить с помощью библиотечной реализации дерева решений
|
||||
задачу классификации на 99% данных из курсовой работы. Проверить
|
||||
работу модели на оставшемся проценте, сделать вывод.
|
||||
|
||||
Модель:
|
||||
|
||||
- Дерево решений `DecisionTreeClassifier`.
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
После этого в папке `static` сгенерируются 2 графика, по которым оценивается результат выполнения программы.
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `numpy`, используемая для обработки массивов данных и вычислений
|
||||
- Библиотека `pyplot`, используемая для построения графиков.
|
||||
- Библиотека `pandas`, используемая для работы с данными для анализа scv формата.
|
||||
- Библиотека `sklearn` - большой набор функционала для анализа данных. Из неё были использованы инструменты:
|
||||
- `DecisionTreeClassifier` - инструмент работы с моделью "Дерево решений"
|
||||
- `metrics` - набор инструменов для оценки моделей
|
||||
- `MinMaxScaler` - инструмент масштабирования значений в заданный диапазон
|
||||
|
||||
### Описание работы
|
||||
#### Описание набора данных
|
||||
Набор данных - набор для определения возможности наличия ССЗ заболеваний у челоека
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
* HeartDisease - Имеет ли человек ССЗ (No / Yes),
|
||||
* BMI - Индекс массы тела человека (float),
|
||||
* Smoking - Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (No / Yes),
|
||||
* AlcoholDrinking - Сильно ли человек употребляет алкоголь (No / Yes),
|
||||
* Stroke - Был ли у человека инсульт (No / Yes),
|
||||
* PhysicalHealth - Сколько дней за последний месяц человек чувствовал себя плохо (0-30),
|
||||
* MentalHealth - Сколько дней за последний месяц человек чувствовал себя удручённо (0-30),
|
||||
* DiffWalking - Ииспытывает ли человек трудности при ходьбе (No / Yes),
|
||||
* Sex - Пол (female, male),
|
||||
* AgeCategory - Возрастная категория (18-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59, 60-64, 65-69, 70-74, 75-79, 80 or older),
|
||||
* Race - Национальная принадлежность человека (White, Black, Hispanic, American Indian/Alaskan Native, Asian, Other),
|
||||
* Diabetic - Был ли у человека диабет (No / Yes),
|
||||
* PhysicalActivity - Занимался ли человек спротом за последний месяц (No / Yes),
|
||||
* GenHealth - Общее самочувствие человека (Excellent, Very good, Good, Fair, Poor),
|
||||
* SleepTime - Сколько человек в среднем спит за 24 часа (0-24),
|
||||
* Asthma - Была ли у человека астма (No / Yes),
|
||||
* KidneyDisease - Было ли у человека заболевание почек (No / Yes),
|
||||
* SkinCancer - Был ли у человека рак кожи (No / Yes).
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Indicators of Heart Disease](https://www.kaggle.com/datasets/kamilpytlak/personal-key-indicators-of-heart-disease/data)
|
||||
|
||||
#### Оцифровка и нормализация данных
|
||||
Для нормальной работы с данными, необходимо исключить из них все нечисловые значения. После этого, представить все строковые значения параметров как числовые и очистить датасет от "мусора". Для удаления нечисловых значений воспользуемся функцией `.dropna()`. Мы исключаем строки с нечисловыми значениями, поскольку данные предварительно были очищены (указано в описании датасета) и строк данных достаточно с избытком для обучение модели: `400.000`.
|
||||
|
||||
После этого, переведём все строковые значения данных в числовые методами прямой оцифровки, разделения на группы, ранжирования.
|
||||
|
||||
Процесс оцифровки данных столбцов со строковыми значениями:
|
||||
|
||||
- Имеет ли человек ССЗ (0 / 1)
|
||||
- Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (0 / 1)
|
||||
- Сильно ли человек употребляет алкоголь (0 / 1)
|
||||
- Был ли у человека инсульт (0 / 1)
|
||||
- Ииспытывает ли человек трудности при ходьбе (0 / 1)
|
||||
- Пол (Ж - 0 / М - 1)
|
||||
- Возрастная категория (средний возраст каждого диапазона)
|
||||
- Национальная принадлежность человека
|
||||
- White - Европиойды - 0
|
||||
- Black - Негройды - 1
|
||||
- Hispanic - Испанцы - 2
|
||||
- American Indian/Alaskan Native - Индусы - 3
|
||||
- Asian - Азиаты - 4
|
||||
- Other - Другие - 5
|
||||
- Был ли у человека диабет (0 / 1)
|
||||
- Занимался ли человек спротом за последний месяц (0 / 1)
|
||||
- Общее самочувствие человека
|
||||
- Excellent - Отлично - 4
|
||||
- Very good - Очень хорошо - 3
|
||||
- Good - Хорошо - 2
|
||||
- Fair - Нормально - 1
|
||||
- "Poor" / "Other..." - Плохое или другое - 0
|
||||
- Была ли у человека астма (0 / 1)
|
||||
- Было ли у человека заболевание почек (0 /1)
|
||||
- Был ли у человека рак кожи (0 / 1)
|
||||
|
||||
После оцифровки значений необходимо избавиться от строк с возможными остаточнымии данными ("мусором"). Для этого переведём автоматически все значения датасета в числовые функцией `to_numeric` и непереводимые отметим как `NaN` (параметр `errors='coerce'`). После снова сотрём строки содержащие нечисловые значения методом `.dropna()` и сохраним нормализованный датасет в новый csv файл:
|
||||
```python
|
||||
df = df.applymap(pd.to_numeric, errors='coerce').dropna()
|
||||
df.to_csv(fileout, index=False)
|
||||
```
|
||||
|
||||
#### Выявление значимых параметров
|
||||
В выбранном датасете параметром предсказания `y` выступает столбец данных `HeartDisease`. Остальные столбцы считаются параметрами для решения задачи предсказания `x`, которые необходимо проранжировать по важности. Чтобы разделить выборку данных на обучаемую и тестовую, воспользуемся функцией `.iloc`.
|
||||
```python
|
||||
x_train = df[["BMI", "Smoking", "AlcoholDrinking", "Stroke", "PhysicalHealth",
|
||||
"MentalHealth", "DiffWalking", "Sex", "AgeCategory", "Race", "Diabetic",
|
||||
"PhysicalActivity", "GenHealth", "SleepTime", "Asthma", "KidneyDisease", "SkinCancer"]].iloc[
|
||||
0:round(len(df) / 100 * 99)]
|
||||
y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)]
|
||||
x_test = df[["BMI", "Smoking", "AlcoholDrinking", "Stroke", "PhysicalHealth",
|
||||
"MentalHealth", "DiffWalking", "Sex", "AgeCategory", "Race", "Diabetic",
|
||||
"PhysicalActivity", "GenHealth", "SleepTime", "Asthma", "KidneyDisease", "SkinCancer"]].iloc[
|
||||
round(len(df) / 100 * 99):len(df)]
|
||||
y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
```
|
||||
Где `round(len(df) / 100 * 99)` - 99ти процентная строка в датасете.
|
||||
|
||||
Теперь, обучим модель на данных `x_train` и `y_train` и получим значимость каждого признака в модели с помощью метода `.feature_importances_`. После отмасштабируем значения важности признаков.
|
||||
```python
|
||||
ranks = np.abs(dtc.feature_importances_)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(len(x_train.columns), 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
ranks = dict(zip(x_train.columns, ranks))
|
||||
ranks = dict(sorted(ranks.items(), key=lambda x: x[1], reverse=True))
|
||||
```
|
||||
|
||||
Чтобы отсеять значимые параметры от незначимых, условимся, что параметры, с оценкой значимости меньше `0.05` будут считаться незначимыми. Выведем список параметров с пометками:
|
||||
```
|
||||
X ranging results:
|
||||
* BMI: 1.0 - Approved
|
||||
* SleepTime: 0.26 - Approved
|
||||
* PhysicalHealth: 0.18 - Approved
|
||||
* GenHealth: 0.16 - Approved
|
||||
* MentalHealth: 0.15 - Approved
|
||||
* AgeCategory: 0.14 - Approved
|
||||
* Race: 0.07 - Approved
|
||||
* PhysicalActivity: 0.06 - Approved
|
||||
* Stroke: 0.04 - Eliminated
|
||||
* Smoking: 0.03 - Eliminated
|
||||
* Asthma: 0.03 - Eliminated
|
||||
* SkinCancer: 0.03 - Eliminated
|
||||
* DiffWalking: 0.02 - Eliminated
|
||||
* Sex: 0.02 - Eliminated
|
||||
* AlcoholDrinking: 0.0 - Eliminated
|
||||
* Diabetic: 0.0 - Eliminated
|
||||
* KidneyDisease: 0.0 - Eliminated
|
||||
```
|
||||
|
||||
Где `Approved` - параметр значим и будет использоваться в предсказании, а `Eliminated` - параметр незначим и будет исключён.
|
||||
|
||||
#### Решение задачи кластеризации на полном наборе признаков
|
||||
Чтобы решить задачу кластеризации моделью `DecisionTreeClassifier`, воспользуемся методом `.predict()`. Оценку качества решения и графики будем строить теми же методами, что в 1й лабораторной работе.
|
||||
|
||||
График решения задачи классификации на полном наборе признаков:
|
||||
|
||||

|
||||
|
||||
#### Решение задачи кластеризации, используя только значимые признаки
|
||||
Согласно предыдущему пункту, значимыми признаками модели были выявлены:
|
||||
* BMI
|
||||
* SleepTime
|
||||
* PhysicalHealth
|
||||
* GenHealth
|
||||
* MentalHealth
|
||||
* AgeCategory
|
||||
* Race
|
||||
* PhysicalActivity
|
||||
Обучим модель только с их использованием, решим задачу классификации и построим график.
|
||||
|
||||
График решения задачи классификации, используя только значимые признаки:
|
||||
|
||||

|
||||
|
||||
### Вывод
|
||||
Согласно среднеквадратической ошибке и коэфициенту детерминации, модель, обученная только на значимых признаков отработала точнее, чем модель, обученная на полном наборе признаков. Это значит, что ранжирование было проведено верно и дало полезный результат. О логической оценке исключённых данных сказать ничего не получится, поскольку действительную зависимость результата от параметров значет только медицинский эксперт.
|
||||
|
||||
Исходя их общих значений точности, обе модели показали хорошие результаты и могут быть применимы к решению задачи классификации на данном наборе данных.
|
||||
221
arutunyan_dmitry_lab_3/main.py
Normal file
@@ -0,0 +1,221 @@
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn import metrics
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
|
||||
'''
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
* HeartDisease - Имеет ли человек ССЗ (No / Yes),
|
||||
* BMI - Индекс массы тела человека (float),
|
||||
* Smoking - Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (No / Yes),
|
||||
* AlcoholDrinking - Сильно ли человек употребляет алкоголь (No / Yes),
|
||||
* Stroke - Был ли у человека инсульт (No / Yes),
|
||||
* PhysicalHealth - Сколько дней за последний месяц человек чувствовал себя плохо (0-30),
|
||||
* MentalHealth - Сколько дней за последний месяц человек чувствовал себя удручённо (0-30),
|
||||
* DiffWalking - Ииспытывает ли человек трудности при ходьбе (No / Yes),
|
||||
* Sex - Пол (female, male),
|
||||
* AgeCategory - Возрастная категория (18-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59, 60-64, 65-69, 70-74, 75-79, 80 or older),
|
||||
* Race - Национальная принадлежность человека (White, Black, Hispanic, American Indian/Alaskan Native, Asian, Other),
|
||||
* Diabetic - Был ли у человека диабет (No / Yes),
|
||||
* PhysicalActivity - Занимался ли человек спротом за последний месяц (No / Yes),
|
||||
* GenHealth - Общее самочувствие человека (Excellent, Very good, Good, Fair, Poor),
|
||||
* SleepTime - Сколько человек в среднем спит за 24 часа (0-24),
|
||||
* Asthma - Была ли у человека астма (No / Yes),
|
||||
* KidneyDisease - Было ли у человека заболевание почек (No / Yes),
|
||||
* SkinCancer - Был ли у человека рак кожи (No / Yes).
|
||||
'''
|
||||
|
||||
|
||||
# Метод оцифровки и нормализации данных
|
||||
def normalisation(filename):
|
||||
fileout = "P:\\ULSTU\\ИИС\\Datasets\\heart_2020_norm.csv"
|
||||
df = pd.read_csv(filename, sep=',').dropna() # Считываем данные с csv файла и удаляем строки, содержащие NaN
|
||||
|
||||
for index, row in df.iterrows():
|
||||
if index % 10000 == 0:
|
||||
print("normalisation running . . . " + str(round((index / len(df) * 100), 2)) +'%')
|
||||
if "Yes" in row["HeartDisease"]: # Имеет ли человек ССЗ (0 / 1)
|
||||
df.at[index, "HeartDisease"] = 1
|
||||
else:
|
||||
df.at[index, "HeartDisease"] = 0
|
||||
if "Yes" in row["Smoking"]: # Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (0 / 1)
|
||||
df.at[index, "Smoking"] = 1
|
||||
else:
|
||||
df.at[index, "Smoking"] = 0
|
||||
if "Yes" in row["AlcoholDrinking"]: # Сильно ли человек употребляет алкоголь (0 / 1)
|
||||
df.at[index, "AlcoholDrinking"] = 1
|
||||
else:
|
||||
df.at[index, "AlcoholDrinking"] = 0
|
||||
if "Yes" in row["Stroke"]: # Был ли у человека инсульт (0 / 1)
|
||||
df.at[index, "Stroke"] = 1
|
||||
else:
|
||||
df.at[index, "Stroke"] = 0
|
||||
if "Yes" in row["DiffWalking"]: # Ииспытывает ли человек трудности при ходьбе (0 / 1)
|
||||
df.at[index, "DiffWalking"] = 1
|
||||
else:
|
||||
df.at[index, "DiffWalking"] = 0
|
||||
if "Female" in row["Sex"]: # Пол (Ж - 0 / М - 1)
|
||||
df.at[index, "Sex"] = 0
|
||||
else:
|
||||
df.at[index, "Sex"] = 1
|
||||
if "18-24" in row["AgeCategory"]: # Возрастная категория (средний возраст каждого диапазона)
|
||||
df.at[index, "AgeCategory"] = (18 + 24) / 2
|
||||
elif "25-29" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (25 + 29) / 2
|
||||
elif "30-34" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (30 + 34) / 2
|
||||
elif "35-39" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (35 + 39) / 2
|
||||
elif "40-44" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (40 + 44) / 2
|
||||
elif "45-49" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (45 + 49) / 2
|
||||
elif "50-54" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (50 + 54) / 2
|
||||
elif "55-59" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (55 + 59) / 2
|
||||
elif "60-64" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (60 + 64) / 2
|
||||
elif "65-69" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (65 + 69) / 2
|
||||
elif "70-74" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (70 + 74) / 2
|
||||
elif "75-79" in row["AgeCategory"]:
|
||||
df.at[index, "AgeCategory"] = (75 + 79) / 2
|
||||
else:
|
||||
df.at[index, "AgeCategory"] = (25 + 29) / 2
|
||||
if "White" in row["Race"]: # Национальная принадлежность человека
|
||||
df.at[index, "Race"] = 0 # White - Европиойды - 0
|
||||
elif "Black" in row["Race"]: # Black - Негройды - 1
|
||||
df.at[index, "Race"] = 1 # Hispanic - Испанцы - 2
|
||||
elif "Hispanic" in row["Race"]: # American Indian/Alaskan Native - Индусы - 3
|
||||
df.at[index, "Race"] = 2 # Asian - Азиаты - 4
|
||||
elif "American Indian/Alaskan Native" in row["Race"]: # Other - Другие - 5
|
||||
df.at[index, "Race"] = 3
|
||||
elif "Asian" in row["Race"]:
|
||||
df.at[index, "Race"] = 4
|
||||
else:
|
||||
df.at[index, "Race"] = 5
|
||||
if "Yes" in row["Diabetic"]: # Был ли у человека диабет (0 / 1)
|
||||
df.at[index, "Diabetic"] = 1
|
||||
else:
|
||||
df.at[index, "Diabetic"] = 0
|
||||
if "Yes" in row["PhysicalActivity"]: # Занимался ли человек спротом за последний месяц (0 / 1)
|
||||
df.at[index, "PhysicalActivity"] = 1
|
||||
else:
|
||||
df.at[index, "PhysicalActivity"] = 0
|
||||
if "Excellent" in row["GenHealth"]: # Общее самочувствие человека
|
||||
df.at[index, "GenHealth"] = 4 # Excellent - Отлично - 4
|
||||
elif "Very good" in row["GenHealth"]: # Very good - Очень хорошо - 3
|
||||
df.at[index, "GenHealth"] = 3 # Good - Хорошо - 2
|
||||
elif "Good" in row["GenHealth"]: # Fair - Нормально - 1
|
||||
df.at[index, "GenHealth"] = 2 # "Poor" / "Other..." - Плохое или другое - 0
|
||||
elif "Fair" in row["GenHealth"]:
|
||||
df.at[index, "GenHealth"] = 1
|
||||
else:
|
||||
df.at[index, "GenHealth"] = 0
|
||||
if "Yes" in row["Asthma"]: # Была ли у человека астма (0 / 1)
|
||||
df.at[index, "Asthma"] = 1
|
||||
else:
|
||||
df.at[index, "Asthma"] = 0
|
||||
if "Yes" in row["KidneyDisease"]: # Было ли у человека заболевание почек (0 /1)
|
||||
df.at[index, "KidneyDisease"] = 1
|
||||
else:
|
||||
df.at[index, "KidneyDisease"] = 0
|
||||
if "Yes" in row["SkinCancer"]: # Был ли у человека рак кожи (0 / 1)
|
||||
df.at[index, "SkinCancer"] = 1
|
||||
else:
|
||||
df.at[index, "SkinCancer"] = 0
|
||||
|
||||
df = df.applymap(pd.to_numeric, errors='coerce').dropna() # Гарантированно убираем все нечисловые значения из датасета
|
||||
df.to_csv(fileout, index=False) # Сохраняем нормализованный датасет для дальнейшей работы
|
||||
return fileout
|
||||
|
||||
|
||||
# Метод ранжирования параметров по степени важности
|
||||
def param_range(filename, elim_kp):
|
||||
df = pd.read_csv(filename, sep=',') # Считываем нормализованные данные и разделяем их на выборки
|
||||
x_train = df[["BMI", "Smoking", "AlcoholDrinking", "Stroke", "PhysicalHealth",
|
||||
"MentalHealth", "DiffWalking", "Sex", "AgeCategory", "Race", "Diabetic",
|
||||
"PhysicalActivity", "GenHealth", "SleepTime", "Asthma", "KidneyDisease", "SkinCancer"]].iloc[
|
||||
0:round(len(df) / 100 * 99)]
|
||||
y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)]
|
||||
x_test = df[["BMI", "Smoking", "AlcoholDrinking", "Stroke", "PhysicalHealth",
|
||||
"MentalHealth", "DiffWalking", "Sex", "AgeCategory", "Race", "Diabetic",
|
||||
"PhysicalActivity", "GenHealth", "SleepTime", "Asthma", "KidneyDisease", "SkinCancer"]].iloc[
|
||||
round(len(df) / 100 * 99):len(df)]
|
||||
y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
|
||||
dtc = DecisionTreeClassifier(random_state=241) # Создаём модель дерева решений
|
||||
dtc.fit(x_train.values, y_train.values) # Обучаем модель на данных
|
||||
y_predict = dtc.predict(x_test.values) # Решаем задачу классификации на полном наборе признаков
|
||||
err = pred_errors(y_predict, y_test.values) # Рассчитываем ошибки предсказания
|
||||
make_plots(y_test.values, y_predict, err[0], err[1], "Полный набор данных") # Строим графики
|
||||
|
||||
ranks = np.abs(dtc.feature_importances_) # Получаем значимость каждого признака в модели
|
||||
minmax = MinMaxScaler() # Шкалируем и нормализуем значимость
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(len(x_train.columns), 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
ranks = dict(zip(x_train.columns, ranks))
|
||||
ranks = dict(sorted(ranks.items(), key=lambda x: x[1], reverse=True)) # Сортируем оценки по максимуму и записываем в словарь
|
||||
|
||||
print("X ranging results: \n")
|
||||
del_keys = [] # Исключаем параметры, важность которых меньше elim_kp
|
||||
for key, value in ranks.items():
|
||||
if value >= elim_kp:
|
||||
print(" * " + key + ": " + str(value) + " - Approved")
|
||||
else:
|
||||
print(" * " + key + ": " + str(value) + " - Eliminated")
|
||||
del_keys.append(key)
|
||||
|
||||
for key in del_keys:
|
||||
ranks.pop(key)
|
||||
|
||||
return filename, ranks.keys()
|
||||
|
||||
|
||||
# Метод решения задачи классификации, основанный только на значимых параметрах
|
||||
def most_valuable_prediction(params):
|
||||
filename = params[0]
|
||||
val_p = params[1]
|
||||
df = pd.read_csv(filename, sep=',')
|
||||
x_train = df[val_p].iloc[0:round(len(df) / 100 * 99)]
|
||||
y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)]
|
||||
x_test = df[val_p].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
|
||||
dtc = DecisionTreeClassifier(random_state=241)
|
||||
dtc.fit(x_train.values, y_train.values)
|
||||
y_predict = dtc.predict(x_test.values)
|
||||
err = pred_errors(y_predict, y_test.values)
|
||||
make_plots(y_test.values, y_predict, err[0], err[1], "Только важные параметры")
|
||||
|
||||
|
||||
# Метод рассчёта ошибок
|
||||
def pred_errors(y_predict, y_test):
|
||||
mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # Рассчёт среднеквадратичной ошибки модели
|
||||
det_kp = np.round(metrics.accuracy_score (y_test, y_predict), 2) # Рассчёт коэфициента детерминации модели
|
||||
return mid_square, det_kp
|
||||
|
||||
|
||||
# Метод отрисовки графиков
|
||||
def make_plots(y_test, y_predict, mid_sqrt, det_kp, title):
|
||||
plt.plot(y_test, c="red", label="\"y\" исходная") # Создание графика исходной функции
|
||||
plt.plot(y_predict, c="green", label="\"y\" предсказанная \n"
|
||||
"Ср^2 = " + str(mid_sqrt) + "\n"
|
||||
"Кд = " + str(det_kp)) # Создание графика предсказанной функции
|
||||
plt.legend(loc='lower left')
|
||||
plt.title(title)
|
||||
plt.savefig('static/' + title + '.png')
|
||||
plt.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Работа системы в комплексе
|
||||
# Здесь elim_kp - значение пороговой значимости параметра (выбран эмпирически)
|
||||
most_valuable_prediction(param_range(normalisation("P:\\ULSTU\\ИИС\\Datasets\\heart_2020_cleaned.csv"), 0.05))
|
||||
|
||||
|
||||
94
arutunyan_dmitry_lab_5/README.md
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
## Лабораторная работа 5. Вариант 4.
|
||||
### Задание
|
||||
Использовать регрессию по варианту для данных из курсовой работы. Самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для
|
||||
решения сформулированной задачи.
|
||||
|
||||
Модель регрессии:
|
||||
|
||||
- Гребневая регрессия `Ridge`.
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
После этого в папке `static` сгенерируются 2 графика, по которым оценивается результат выполнения программы.
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `numpy`, используемая для обработки массивов данных и вычислений
|
||||
- Библиотека `pyplot`, используемая для построения графиков.
|
||||
- Библиотека `pandas`, используемая для работы с данными для анализа scv формата.
|
||||
- Библиотека `sklearn` - большой набор функционала для анализа данных. Из неё были использованы инструменты:
|
||||
- `Ridge` - инструмент работы с моделью "Гребневая регрессия"
|
||||
- `metrics` - набор инструменов для оценки моделей
|
||||
|
||||
`Ridge` - это линейная регрессионная модель с регуляризацией L2, которая может быть использована для решения задачи регрессии.
|
||||
|
||||
### Описание работы
|
||||
#### Описание набора данных
|
||||
Набор данных - набор для определения возможности наличия ССЗ заболеваний у челоека
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
* HeartDisease - Имеет ли человек ССЗ (No / Yes),
|
||||
* BMI - Индекс массы тела человека (float),
|
||||
* Smoking - Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (No / Yes),
|
||||
* AlcoholDrinking - Сильно ли человек употребляет алкоголь (No / Yes),
|
||||
* Stroke - Был ли у человека инсульт (No / Yes),
|
||||
* PhysicalHealth - Сколько дней за последний месяц человек чувствовал себя плохо (0-30),
|
||||
* MentalHealth - Сколько дней за последний месяц человек чувствовал себя удручённо (0-30),
|
||||
* DiffWalking - Ииспытывает ли человек трудности при ходьбе (No / Yes),
|
||||
* Sex - Пол (female, male),
|
||||
* AgeCategory - Возрастная категория (18-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59, 60-64, 65-69, 70-74, 75-79, 80 or older),
|
||||
* Race - Национальная принадлежность человека (White, Black, Hispanic, American Indian/Alaskan Native, Asian, Other),
|
||||
* Diabetic - Был ли у человека диабет (No / Yes),
|
||||
* PhysicalActivity - Занимался ли человек спротом за последний месяц (No / Yes),
|
||||
* GenHealth - Общее самочувствие человека (Excellent, Very good, Good, Fair, Poor),
|
||||
* SleepTime - Сколько человек в среднем спит за 24 часа (0-24),
|
||||
* Asthma - Была ли у человека астма (No / Yes),
|
||||
* KidneyDisease - Было ли у человека заболевание почек (No / Yes),
|
||||
* SkinCancer - Был ли у человека рак кожи (No / Yes).
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Indicators of Heart Disease](https://www.kaggle.com/datasets/kamilpytlak/personal-key-indicators-of-heart-disease/data)
|
||||
|
||||
#### Формулировка задачи
|
||||
Поскольку модель гребневой регрессии используется для решения задачи регресси, то попробуем на ней предсказать поведение параметров при обучении на всех признаках, и на значимых признаках, найденных ранее в лабораторной №3. Сформулируем задачу:
|
||||
> "Решить задачу предсказания с помощью моделей гребневой регрессии, обученных на всех признаках и только на значимых признаках. Сравнить результаты работы моделей"
|
||||
|
||||
#### Решение задачи предсказания
|
||||
|
||||
Создадим два обучающих модуля. В 1й включим все признаки. Разделим даныые на выборки. Пусть обучающая выборка будет 99% данных, а тестовая - 1% соответсвенно:
|
||||
```python
|
||||
x_train = df.drop("HeartDisease", axis=1).iloc[0:round(len(df) / 100 * 99)]
|
||||
y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)]
|
||||
x_test = df.drop("HeartDisease", axis=1).iloc[round(len(df) / 100 * 99):len(df)]
|
||||
y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
```
|
||||
Тогда во 2м модуле используем только признаки, названные значимыми в 3й лабораторной, а именно:
|
||||
* BMI
|
||||
* SleepTime
|
||||
* PhysicalHealth
|
||||
* GenHealth
|
||||
* MentalHealth
|
||||
* AgeCategory
|
||||
* Race
|
||||
* PhysicalActivity
|
||||
|
||||
Обучим две модели гребневой регнессии на данных из разных модулей. Решим задачу предсказания, найдём ошибки и построим графики.
|
||||
|
||||
График решения задачи предсказания моделью гребневой регрессии с использованием всех признаков:
|
||||
|
||||

|
||||
|
||||
График решения задачи предсказания моделью гребневой регрессии с использованием значимых признаков:
|
||||
|
||||

|
||||
|
||||
### Вывод
|
||||
Согласно графиком, среднеквадратическая ошибка обеих моделей достаточна низкая. что свидетельствует достаточно точному соответствию истиных и полученных значений, однако коэффициент детерминации моделей имеет очень низкое значение, что свидетельствует практически полному непониманию модели зависимостей в данных.
|
||||
> **Note**
|
||||
>
|
||||
> Модель `Ridge` имеет коэффициент регуляризации `alpha`, который помогает избавиться модели от переобучения, однако даже при стандартном его значении в единицу, модель показывает очень низкий коэффициент детерминации, поэтому варьирование его значения не принесёт никаких результатов.
|
||||
|
||||
Исходя из полученных результатов можно сделать вывод, что модель гребневой регрессии неприменима к данному набору данных.
|
||||
BIN
arutunyan_dmitry_lab_5/all.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
arutunyan_dmitry_lab_5/imp.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
65
arutunyan_dmitry_lab_5/main.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn import metrics
|
||||
from sklearn.linear_model import Ridge
|
||||
|
||||
filein = "P:\\ULSTU\\ИИС\\Datasets\\heart_2020_norm.csv"
|
||||
|
||||
|
||||
# Метод решения задачи предсказания на всех признаках данных
|
||||
def ridge_all():
|
||||
df = pd.read_csv(filein, sep=',')
|
||||
|
||||
x_train = df.drop("HeartDisease", axis=1).iloc[0:round(len(df) / 100 * 99)]
|
||||
y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)]
|
||||
x_test = df.drop("HeartDisease", axis=1).iloc[round(len(df) / 100 * 99):len(df)]
|
||||
y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
|
||||
rid = Ridge(alpha=1.0)
|
||||
rid.fit(x_train.values, y_train.values)
|
||||
y_predict = rid.predict(x_test.values)
|
||||
err = pred_errors(y_predict, y_test.values)
|
||||
make_plots(y_test.values, y_predict, err[0], err[1], "Гребневая регрессия (все признаки)")
|
||||
|
||||
|
||||
# Метод решения задачи предсказания на значимых признаках данных
|
||||
def ridge_valuable():
|
||||
df = pd.read_csv(filein, sep=',')
|
||||
|
||||
x_train = df[["BMI", "PhysicalHealth", "MentalHealth", "AgeCategory", "Race",
|
||||
"PhysicalActivity", "GenHealth", "SleepTime", ]].iloc[0:round(len(df) / 100 * 99)]
|
||||
y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)]
|
||||
x_test = df[["BMI", "PhysicalHealth", "MentalHealth", "AgeCategory", "Race",
|
||||
"PhysicalActivity", "GenHealth", "SleepTime", ]].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)]
|
||||
|
||||
rid = Ridge(alpha=1.0)
|
||||
rid.fit(x_train.values, y_train.values)
|
||||
y_predict = rid.predict(x_test.values)
|
||||
err = pred_errors(y_predict, y_test.values)
|
||||
make_plots(y_test.values, y_predict, err[0], err[1], "Гребневая регрессия (значимые признаки)")
|
||||
|
||||
|
||||
# Метод рассчёта ошибок
|
||||
def pred_errors(y_predict, y_test):
|
||||
mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # Рассчёт среднеквадратичной ошибки модели
|
||||
det_kp = np.round(metrics.r2_score (y_test, y_predict), 2) # Рассчёт коэфициента детерминации модели
|
||||
return mid_square, det_kp
|
||||
|
||||
|
||||
# Метод отрисовки графиков
|
||||
def make_plots(y_test, y_predict, mid_sqrt, det_kp, title):
|
||||
plt.plot(y_test, c="red", label="\"y\" исходная") # Создание графика исходной функции
|
||||
plt.plot(y_predict, c="green", label="\"y\" предсказанная \n"
|
||||
"Ср^2 = " + str(mid_sqrt) + "\n"
|
||||
"Кд = " + str(det_kp)) # Создание графика предсказанной функции
|
||||
plt.legend(loc='lower left')
|
||||
plt.title(title)
|
||||
plt.savefig('static/' + title + '.png')
|
||||
plt.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
ridge_all()
|
||||
ridge_valuable()
|
||||
BIN
arutunyan_dmitry_lab_6/1.png
Normal file
|
After Width: | Height: | Size: 216 KiB |
BIN
arutunyan_dmitry_lab_6/2.png
Normal file
|
After Width: | Height: | Size: 116 KiB |
110
arutunyan_dmitry_lab_6/README.md
Normal file
@@ -0,0 +1,110 @@
|
||||
|
||||
## Лабораторная работа 6. Вариант 4.
|
||||
### Задание
|
||||
Использовать нейронную сеть `MLPRegressor` для данных из курсовой работы. Самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной задачи.
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
После этого в папке `static` сгенерируются график, по которому оценивается результат выполнения программы.
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `numpy`, используемая для обработки массивов данных и вычислений
|
||||
- Библиотека `pyplot`, используемая для построения графиков.
|
||||
- Библиотека `pandas`, используемая для работы с данными для анализа scv формата.
|
||||
- Библиотека `sklearn` - большой набор функционала для анализа данных. Из неё были использованы инструменты:
|
||||
- `train_test_split` - разделитель данных на обучающиую и тестовую выборки
|
||||
- `metrics` - набор инструменов для оценки моделей
|
||||
- `MLPRegressor` - инструмент работы с моделью "Многослойный перцептрон для задачи регрессии"
|
||||
|
||||
`MLPRegressor` - это тип искусственной нейронной сети, состоящей из нескольких слоев нейронов, включая входной слой, скрытые слои и выходной слой.
|
||||
Этот класс позволяет создавать и обучать MLP-модель для предсказания непрерывных числовых значений.
|
||||
|
||||
### Описание работы
|
||||
#### Описание набора данных
|
||||
Набор данных - набор для определения возможности наличия ССЗ заболеваний у челоека
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
* HeartDisease - Имеет ли человек ССЗ (No / Yes),
|
||||
* BMI - Индекс массы тела человека (float),
|
||||
* Smoking - Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (No / Yes),
|
||||
* AlcoholDrinking - Сильно ли человек употребляет алкоголь (No / Yes),
|
||||
* Stroke - Был ли у человека инсульт (No / Yes),
|
||||
* PhysicalHealth - Сколько дней за последний месяц человек чувствовал себя плохо (0-30),
|
||||
* MentalHealth - Сколько дней за последний месяц человек чувствовал себя удручённо (0-30),
|
||||
* DiffWalking - Ииспытывает ли человек трудности при ходьбе (No / Yes),
|
||||
* Sex - Пол (female, male),
|
||||
* AgeCategory - Возрастная категория (18-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59, 60-64, 65-69, 70-74, 75-79, 80 or older),
|
||||
* Race - Национальная принадлежность человека (White, Black, Hispanic, American Indian/Alaskan Native, Asian, Other),
|
||||
* Diabetic - Был ли у человека диабет (No / Yes),
|
||||
* PhysicalActivity - Занимался ли человек спротом за последний месяц (No / Yes),
|
||||
* GenHealth - Общее самочувствие человека (Excellent, Very good, Good, Fair, Poor),
|
||||
* SleepTime - Сколько человек в среднем спит за 24 часа (0-24),
|
||||
* Asthma - Была ли у человека астма (No / Yes),
|
||||
* KidneyDisease - Было ли у человека заболевание почек (No / Yes),
|
||||
* SkinCancer - Был ли у человека рак кожи (No / Yes).
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Indicators of Heart Disease](https://www.kaggle.com/datasets/kamilpytlak/personal-key-indicators-of-heart-disease/data)
|
||||
|
||||
#### Формулировка задачи
|
||||
Поскольку модель `MLPRegressor` используется для решения задачи регресси, то попробуем на ней предсказать поведение параметров при обучении на всех признаках, варьируя конфигурации модели. Сформулируем задачу:
|
||||
> "Решить задачу предсказания с помощью нейронной сети, обученной на всех признаках при различных конфигурациях. Сравнить результаты работы моделей"
|
||||
|
||||
#### Решение задачи предсказания
|
||||
Из csv файла выргузим набор данных, выделим параметр для предсказания - (столбец `HeartDisease`), и его признаки - все остальные столбцы. Разделим данные на обучающую и тестовые выборки, при условии, что 99.9% данных - для обучения, а остальные для тестов:
|
||||
```python
|
||||
х, y = [df.drop("HeartDisease", axis=1).values, df["HeartDisease"].values]
|
||||
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.001, random_state=42)
|
||||
```
|
||||
Создадим класс нейронной сети и определим варьируемые конфигурации.
|
||||
|
||||
`hidden_layer_sizes ` - параметр, принимающий на вход количество скрытых слоёв нейронной сети и количество нейронов в каждом слое. Для определения его наилучшего значения необходимо взять минимальное количество слоёв и нейронов в слое и постепенно увеличивать его, до тех пор, пока качество модели не перестанет улучшаться или не будет достаточным.
|
||||
> **Note**
|
||||
>
|
||||
> Экспериментально для нейронной сети `MLPRegressor` было выявленно наилучшее значение равное 100 слоям нейронной сети по 50 нейронов в каждой. Для прелоставления данных процесс оказался очень длительным, поэтому будет указан только наилучший результат.
|
||||
|
||||
`activation` - функция активации. В классе представлена 4мя решениями:
|
||||
- `identity` - функция `f(x) = x`, абсолютно линейная идентичная функция для приведения работы нейронной сети ближе к модели линейной регрессии,
|
||||
- `logistic` - логистическая сигмовидная функция вида `f(x) = 1 / (1 + exp(-x))`,
|
||||
- `tanh` - гиперболическая функция тангенса `f(x) = tanh(x)`,
|
||||
- `relu` - функция выпрямленной линейной единицы измерения `f(x) = max(0, x)`, проверяет больше ли х нуля (используется чаще всего).
|
||||
|
||||
`solver` - метод оптимизации весов. Существует в 3х вариациях:
|
||||
- `Bfgs` - оптимизатор из семейства квазиньютоновских методов,
|
||||
> **Warning**
|
||||
>
|
||||
> Оптимизатор из семейства квазиньютоновских методов показал себя как очень жадный по времени выполнения алгоритм при этом использующий большие коэфициенты весов, что приводило к едиичным, но слишком большим погрешностям на данных. Поэтому в эксперименте варьирования он не принимал участия.
|
||||
|
||||
- `sgd` - метод стозастического градиентного спуска (классика),
|
||||
- `adam` - оптимизированный метод стозастического градиентного спуска Кингмы, Дидерика и Джимми Барнсома.
|
||||
|
||||
```python
|
||||
mlp = MLPRegressor(hidden_layer_sizes=(100, 50), activation='relu', solver='adam', random_state=42)
|
||||
mlp.fit(x_train, y_train)
|
||||
y_predict = mlp.predict(x_test)
|
||||
err = pred_errors(y_predict, y_test)
|
||||
```
|
||||
Проведём эксперимент варьирования конфигураций, посчитаем ошибки предсказания и выберем наилучшую нейронную сеть.
|
||||
|
||||
#### Эксперимент варьирования
|
||||
Рассмотрим различные функции активации.
|
||||
|
||||
Графики решения задачи предсказания на разных функциях активации:
|
||||
|
||||

|
||||
|
||||
Теперь для выбранной функции подберём лучший метод оптимизации весов.
|
||||
|
||||
Грфики решения задачи предсказания на разных методах оптимизации весов:
|
||||
|
||||

|
||||
|
||||
### Вывод
|
||||
Согласно графиком, наилучшие результаты показала нейронаая сеть с функцией активации гиперболического тангенса `tanh` и методом оптимизации весов путём оптимизированного стозастического градиентного спуска Кингмы, Дидерика и Джимми Барнсома `adam`.
|
||||
|
||||
В целом нейронная сеть справилась неудовлетворительно с задачей предсказания, показав хоть и небольшую среднеквадратическую ошибку в 0.25, но очень низкий коэфициент детерминации в 0.23 максимально.
|
||||
|
||||
Это значит, что теоретически модель может предсказать результат по признакам, однако понимания зависимостей результата от последних у неё мало.
|
||||
46
arutunyan_dmitry_lab_6/main.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn import metrics
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.neural_network import MLPRegressor
|
||||
|
||||
filein = "P:\\ULSTU\\ИИС\\Datasets\\heart_2020_norm.csv"
|
||||
|
||||
|
||||
# Метод обучения нейронной сети
|
||||
def reg_neural_net():
|
||||
df = pd.read_csv(filein, sep=',')
|
||||
x, y = [df.drop("HeartDisease", axis=1).values,
|
||||
df["HeartDisease"].values]
|
||||
|
||||
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.001, random_state=42)
|
||||
|
||||
mlp = MLPRegressor(hidden_layer_sizes=(100, 50), activation='tanh', solver='adam', random_state=15000)
|
||||
mlp.fit(x_train, y_train)
|
||||
y_predict = mlp.predict(x_test)
|
||||
err = pred_errors(y_predict, y_test)
|
||||
make_plots(y_test, y_predict, err[0], err[1], "Нейронная сеть")
|
||||
|
||||
|
||||
# Метод рассчёта ошибок
|
||||
def pred_errors(y_predict, y_test):
|
||||
mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # Рассчёт среднеквадратичной ошибки модели
|
||||
det_kp = np.round(metrics.r2_score(y_test, y_predict), 2) # Рассчёт коэфициента детерминации модели
|
||||
return mid_square, det_kp
|
||||
|
||||
|
||||
# Метод отрисовки графиков
|
||||
def make_plots(y_test, y_predict, mid_sqrt, det_kp, title):
|
||||
plt.plot(y_test, c="red", label="\"y\" исходная") # Создание графика исходной функции
|
||||
plt.plot(y_predict, c="green", label="\"y\" предсказанная \n"
|
||||
"Ср^2 = " + str(mid_sqrt) + "\n"
|
||||
"Кд = " + str(det_kp)) # Создание графика предсказанной функции
|
||||
plt.legend(loc='lower left')
|
||||
plt.title(title)
|
||||
plt.savefig('static/' + title + '.png')
|
||||
plt.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
reg_neural_net()
|
||||
83
basharin_sevastyan_lab_1/README.md
Normal file
@@ -0,0 +1,83 @@
|
||||
## Лабораторная работа 1. Вариант 4.
|
||||
### Задание
|
||||
Построить графики, отобразить
|
||||
качество моделей, объяснить полученные результаты.
|
||||
|
||||
Данные: `make_circles (noise=0.2, factor=0.5, random_state=rs)`
|
||||
|
||||
Модели:
|
||||
- Линейная регресся
|
||||
- Полиномиальная регрессия (со степенью 4)
|
||||
- Гребневая полиномиальная регресся (со степенью 4, alpha = 1.0)
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
После будет запущена программа и сгенерированы 3 графика.
|
||||
|
||||
### Используемые технологии
|
||||
- `numpy` (псевдоним `np`): NumPy - это библиотека для научных вычислений в Python.
|
||||
- `matplotlib.pyplot` (псевдоним `plt`): Matplotlib - это библиотека для создания статических, анимированных и интерактивных визуализаций в Python. `pyplot` - это модуль Matplotlib, который используется для создания графиков и диаграмм.
|
||||
- `matplotlib.colors.ListedColormap` - этот модуль Matplotlib используется для создания цветных схем цветовых карт, которые могут быть использованы для визуализации данных.
|
||||
- `sklearn` (scikit-learn): Scikit-learn - это библиотека для машинного обучения и анализа данных в Python. Из данной библиотеки были использованы следующие модули:
|
||||
- `model_selection` - Этот модуль scikit-learn предоставляет инструменты для разделения данных на обучающие и тестовые наборы.
|
||||
- `linear_model` - содержит реализации линейных моделей, таких как линейная регрессия, логистическая регрессия и другие.
|
||||
- `pipeline` - позволяет объединить несколько этапов обработки данных и построения моделей в одну конвейерную цепочку.
|
||||
- `PolynomialFeatures` - Этот класс scikit-learn используется для генерации полиномиальных признаков, позволяя моделям учитывать нелинейные зависимости в данных.
|
||||
- `make_circles` - Эта функция scikit-learn создает набор данных, представляющий собой два класса, расположенных в форме двух пересекающихся окружностей. Это удобно для демонстрации работы различных моделей классификации.
|
||||
- `LinearRegression` - линейная регрессия - это алгоритм машинного обучения, используемый для задач бинарной классификации.
|
||||
|
||||
### Описание работы
|
||||
Программа генерирует данные, разделяет данные на тестовые и обучающие для моделей по заданию.
|
||||
```python
|
||||
rs = randrange(50)
|
||||
X, y = make_circles(noise=0.2, factor=0.5, random_state=rs)
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=rs)
|
||||
```
|
||||
`X_train` и `y_train` используются для обучения, а на данных `X_test` и `y_test` - оценка их качества.
|
||||
|
||||
Поскольку все модели в задании регрессионные, результаты работы будем оценивать через решение задачи предсказания.
|
||||
|
||||
Для оценки будем использовать следующие критерии: среднеквадратическому отклонению и коэфициенту детерминации. Чем ошибка меньше и чем коэфициент детерминации больше, тем лучше.
|
||||
```python
|
||||
np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) #среднеквадратическое отклонение
|
||||
np.round(metrics.r2_score(y_test, y_predict), 2) #коэфициент детерминации
|
||||
```
|
||||
Оценочные параметры округлены с помощью функции `round` до 3х и 2х знаков после запятой.
|
||||
|
||||
### Линейная регрессия
|
||||
Для создания модели линейной регрессии воспользуемся `LinearRegression`.
|
||||
```python
|
||||
linear_reg = LinearRegression()
|
||||
```
|
||||
Обучим её и предскажем с её помощью `y` на тестовой выборке `x_text`.
|
||||
```python
|
||||
model.fit(X_train, y_train)
|
||||
y_predict = model.predict(X_test)
|
||||
```
|
||||
График для оценки результатов:
|
||||

|
||||
|
||||
#### Полиномиальная регрессия
|
||||
Добавим 3 недостающих члена к линейной модели, возведённых в соответствующие степени 2, 3 и 4.
|
||||
```python
|
||||
poly_reg = make_pipeline(PolynomialFeatures(degree=4), StandardScaler(), LogisticRegression(random_state=rs))
|
||||
```
|
||||
График для оценки результатов:
|
||||

|
||||
|
||||
#### Полиномиальная гребневая регрессия
|
||||
Линейная регрессия является разновидностью полиномиальной регрессии со степенью ведущего члена равной 1.
|
||||
```python
|
||||
ridge_poly_reg = make_pipeline(PolynomialFeatures(degree=4), StandardScaler(), LogisticRegression(penalty='l2', C=1.0, random_state=rs))
|
||||
```
|
||||
График для оценки результатов:
|
||||

|
||||
|
||||
Точность измерений:
|
||||

|
||||
|
||||
### Вывод
|
||||
Наиболее низкое среднеквадратичное отклонение и наиболее высокий коэффициент детерминации показала модель полиномиальной и полиномиальной гребневой регрессии. Это означает, что они являются лучшими моделями для данного набора данных.
|
||||
BIN
basharin_sevastyan_lab_1/linear.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
60
basharin_sevastyan_lab_1/main.py
Normal file
@@ -0,0 +1,60 @@
|
||||
from random import randrange
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
from matplotlib.colors import ListedColormap
|
||||
from sklearn import metrics
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import LinearRegression, LogisticRegression
|
||||
from sklearn.pipeline import make_pipeline
|
||||
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
|
||||
from sklearn.datasets import make_circles
|
||||
|
||||
rs = randrange(50)
|
||||
X, y = make_circles(noise=0.2, factor=0.5, random_state=rs) # Сгенерируем данные
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
|
||||
random_state=rs) # Разделим данные на обучающий и тестовый наборы
|
||||
|
||||
# Линейная модель
|
||||
linear_reg = LinearRegression()
|
||||
# Полиномиальная регрессия (со степенью 4)
|
||||
poly_reg = make_pipeline(PolynomialFeatures(degree=4), StandardScaler(), LogisticRegression(random_state=rs))
|
||||
# Гребневая полиномиальная регрессия (со степенью 4 и alpha=1.0)
|
||||
ridge_poly_reg = make_pipeline(PolynomialFeatures(degree=4), StandardScaler(), LogisticRegression(penalty='l2', C=1.0,
|
||||
random_state=rs))
|
||||
|
||||
|
||||
# Обучение моделей
|
||||
def mid_sq_n_det(name, model):
|
||||
model.fit(X_train, y_train)
|
||||
y_predict = model.predict(X_test)
|
||||
print(f'Рассчёт среднеквадратичной ошибки для {name}: '
|
||||
f'{np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3)}') # Рассчёт среднеквадратичной ошибки модели
|
||||
print(f'Рассчёт коэфициента детерминации для {name}: {np.round(metrics.r2_score(y_test, y_predict), 2)}') # Рассчёт коэфициента детерминации модели
|
||||
return name, model
|
||||
|
||||
|
||||
# Графики
|
||||
models = [mid_sq_n_det("Линейная регрессия", linear_reg),
|
||||
mid_sq_n_det("Полиномиальная регрессия (со степенью 4)", poly_reg),
|
||||
mid_sq_n_det("Гребневая полиномиальная регрессия (со степенью 4, alpha = 1.0)", ridge_poly_reg)]
|
||||
|
||||
cmap_background = ListedColormap(['#FFAAAA', '#AAAAFF'])
|
||||
cmap_points = ListedColormap(['#FF0000', '#0000FF'])
|
||||
|
||||
plt.figure(figsize=(15, 4))
|
||||
for i, (name, model) in enumerate(models):
|
||||
plt.subplot(1, 3, i + 1)
|
||||
xx, yy = np.meshgrid(np.linspace(X[:, 0].min() - 1, X[:, 0].max() + 1, 100),
|
||||
np.linspace(X[:, 1].min() - 1, X[:, 1].max() + 1, 100))
|
||||
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
|
||||
Z = Z.reshape(xx.shape)
|
||||
plt.contourf(xx, yy, Z, cmap=cmap_background, alpha=0.5)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cmap_points, marker='o', label='Тестовые точки')
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cmap_points, marker='x', label='Обучающие точки')
|
||||
plt.legend()
|
||||
plt.title(name)
|
||||
plt.text(0.5, -1.2, 'Красный класс', color='r', fontsize=12)
|
||||
plt.text(0.5, -1.7, 'Синий класс', color='b', fontsize=12)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
BIN
basharin_sevastyan_lab_1/poly.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
basharin_sevastyan_lab_1/result.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
basharin_sevastyan_lab_1/ridge.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
55
belyaeva_ekaterina_lab_2/README.md
Normal file
@@ -0,0 +1,55 @@
|
||||
## Задание
|
||||
|
||||
Используя код из пункта «Решение задачи ранжирования признаков», выполните ранжирование признаков с помощью указанных по варианту моделей. Отобразите получившиеся оценки каждого признака каждой моделью и среднюю оценку. Проведите анализ получившихся результатов. Какие четыре признака оказались самыми важными по среднему значению? (Названия\индексы признаков и будут ответом на задание).
|
||||
|
||||
Вариант 6:
|
||||
|
||||
- Гребневая регрессия (Ridge)
|
||||
- Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
- Линейная корреляция (f_regression)
|
||||
|
||||
|
||||
## Как запустить лабораторную
|
||||
Запустить файл main.py
|
||||
## Используемые технологии
|
||||
Библиотеки numpy, scikit-learn, их компоненты
|
||||
## Описание лабораторной (программы)
|
||||
Данный код выполняет оценку важности признаков в задаче регрессии.
|
||||
|
||||
Сначала генерируются исходные данные с использованием 14 признаков (X) и функции-выхода (Y), которая представляет собой регрессионную проблему Фридмана. Затем используются две модели - гребневая регрессия (Ridge) и случайный лес (Random Forest) - для обучения на данных и оценки важности признаков.
|
||||
|
||||
Затем вычисляются коэффициенты корреляции между признаками и целевой переменной, и результаты сохраняются в словаре ranks с ключом "Correlation".
|
||||
|
||||
Далее в цикле вычисляются средние значения оценок важности признаков для каждого признака. Результаты сохраняются в словаре mean.
|
||||
|
||||
Как результат, программа выводит оценки важности для каждой модели и средние значения важности для каждого признака
|
||||
## Результат
|
||||
|
||||
В результате получаем следующее:
|
||||
|
||||
Ridge
|
||||
[('x4', 1.0), ('x14', 0.92), ('x1', 0.76), ('x2', 0.75), ('x12', 0.67), ('x5', 0.61), ('x11', 0.59), ('x6', 0.08), ('x8', 0.08), ('x3', 0.06), ('x7', 0.03), ('x10', 0.01), ('x9', 0.0), ('x13', 0.0)]
|
||||
Random Forest
|
||||
[('x14', 1.0), ('x2', 0.76), ('x1', 0.66), ('x4', 0.55), ('x11', 0.29), ('x12', 0.28), ('x5', 0.23), ('x3', 0.1), ('x13', 0.09), ('x7', 0.01), ('x6', 0.0), ('x8', 0.0), ('x9', 0.0), ('x10', 0.0)]
|
||||
Correlation
|
||||
[('x4', 1.0), ('x14', 0.98), ('x2', 0.45), ('x12', 0.44), ('x1', 0.3), ('x11', 0.29), ('x5', 0.04), ('x8', 0.02), ('x7', 0.01), ('x9', 0.01), ('x3', 0.0), ('x6', 0.0), ('x10', 0.0), ('x13', 0.0)]
|
||||
Mean Importance:
|
||||
x14 : 0.97
|
||||
x4 : 0.85
|
||||
x2 : 0.65
|
||||
x1 : 0.57
|
||||
x12 : 0.46
|
||||
x11 : 0.39
|
||||
x5 : 0.29
|
||||
x3 : 0.05
|
||||
x6 : 0.03
|
||||
x8 : 0.03
|
||||
x13 : 0.03
|
||||
x7 : 0.02
|
||||
x9 : 0.0
|
||||
x10 : 0.0
|
||||
|
||||
Вывод: Самым важным признаком в среднем оказался х14, потом х4 и далее по убывающей - х2, х1, х12, х11, х5. Остальные признаки показали минимальную значимость или не имеют ее совсем.
|
||||
|
||||
Но стоит отметить, что несмотря на среднюю оценку признаков, разные модели выявили их значимость по-разному, что можно увидеть в тексте выше.
|
||||
Корреляция и гребневая регрессия показали чуть более схожий результат, нежели сокращение признаков случайными деревьями, хотя стоит заметить, что результаты всех моделей все равно отличаются.
|
||||
74
belyaeva_ekaterina_lab_2/main.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from sklearn.linear_model import Ridge
|
||||
from sklearn.feature_selection import f_regression
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import numpy as np
|
||||
|
||||
# генерируем исходные данные: 750 строк-наблюдений и 14 столбцов-признаков
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
# Задаем функцию-выход: регрессионную проблему Фридмана
|
||||
Y = (10 * np.sin(np.pi*X[:, 0]*X[:, 1]) + 20*(X[:, 2] - .5)**2 +
|
||||
10*X[:, 3] + 5*X[:, 4]**5 + np.random.normal(0, 1))
|
||||
# Добавляем зависимость признаков
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
|
||||
# Гребневая регрессия
|
||||
ridge = Ridge(alpha=7)
|
||||
ridge.fit(X, Y)
|
||||
# Случайные деревья
|
||||
rf = RandomForestRegressor(n_estimators=100, random_state=0)
|
||||
rf.fit(X, Y)
|
||||
|
||||
ranks = {}
|
||||
|
||||
names = ["x%s" % i for i in range(1, 15)]
|
||||
|
||||
def rank_to_dict(ranks, names):
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
ranks["Ridge"] = rank_to_dict(ridge.coef_, names)
|
||||
ranks["Random Forest"] = rank_to_dict(rf.feature_importances_, names)
|
||||
|
||||
# Вычисляем коэффициенты корреляции между признаками и целевой переменной
|
||||
correlation_coeffs = f_regression(X, Y)[0]
|
||||
|
||||
# Добавляем результаты корреляции в словарь ranks
|
||||
ranks["Correlation"] = rank_to_dict(correlation_coeffs, names)
|
||||
|
||||
# Создаем пустой словарь для данных
|
||||
mean = {}
|
||||
|
||||
# Бежим по словарю ranks
|
||||
for key, value in ranks.items():
|
||||
# Пробегаемся по словарю значений ranks, которые являются парой имя:оценка
|
||||
for item in value.items():
|
||||
# Имя будет ключом для нашего mean
|
||||
# Если элемента с текущим ключом в mean нет - добавляем
|
||||
if item[0] not in mean:
|
||||
mean[item[0]] = 0
|
||||
# Суммируем значения по каждому ключу-имени признака
|
||||
mean[item[0]] += item[1]
|
||||
|
||||
# Находим среднее по каждому признаку
|
||||
for key, value in mean.items():
|
||||
res = value / len(ranks)
|
||||
mean[key] = round(res, 2)
|
||||
|
||||
# Сортируем и распечатываем список
|
||||
mean = sorted(mean.items(), key=lambda x: x[1], reverse=True)
|
||||
|
||||
for key, value in ranks.items():
|
||||
ranks[key] = sorted(value.items(), key=lambda x: x[1], reverse=True)
|
||||
for key, value in ranks.items():
|
||||
print(key)
|
||||
print(value)
|
||||
|
||||
print("Mean Importance:")
|
||||
for item in mean:
|
||||
print(item[0], ":", item[1])
|
||||
BIN
gordeeva_anna_lab_2/Lasso_screen.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
gordeeva_anna_lab_2/RFE_screen.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
gordeeva_anna_lab_2/RandLasso_screen.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
97
gordeeva_anna_lab_2/lab2.py
Normal file
@@ -0,0 +1,97 @@
|
||||
import streamlit as st
|
||||
import numpy as np
|
||||
from sklearn.linear_model import Lasso
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
from sklearn.linear_model import LassoCV
|
||||
from sklearn.feature_selection import SelectFromModel
|
||||
from sklearn.feature_selection import RFE
|
||||
|
||||
st.header("Лабораторная работа 2. Вариант 7. Лассо, случайное лассо, рекурсивное сокращение признаков")
|
||||
|
||||
# генерируем исходные данные: 750 строк-наблюдений и 14 столбцов-признаков
|
||||
np.random.seed(0) #делаем случайные числа предсказуемыми, чтобы при каждом сбросе, рандомные числа были одинаковы
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
# Задаем функцию-выход: регрессионную проблему Фридмана
|
||||
Y = (10 * np.sin(np.pi * X[:, 0] * X[:, 1]) + 20 * (X[:, 2] - .5) ** 2 +
|
||||
10 * X[:, 3] + 5 * X[:, 4] ** 5 + np.random.normal(0, 1))
|
||||
# Добавляем зависимость признаков
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
|
||||
|
||||
# Создание списка пар в формате: номер признака - средняя оценка
|
||||
names = ["x%s" % i for i in range(1, 15)] # Список имен признаков
|
||||
|
||||
def random_lasso(X, Y, n_subsets=100):
|
||||
n_samples, n_features = X.shape
|
||||
selected_features = np.zeros(n_features)
|
||||
|
||||
for _ in range(n_subsets):
|
||||
# Создаем случайное подмножество признаков
|
||||
subset_indices = np.random.choice(n_features, int(n_features * 0.7), replace=False)
|
||||
X_subset = X[:, subset_indices]
|
||||
|
||||
# Создаем LassoCV модель
|
||||
lasso_cv = LassoCV(alphas=[0.05])
|
||||
|
||||
# Обучаем модель на подмножестве признаков
|
||||
lasso_cv.fit(X_subset, Y)
|
||||
|
||||
# Определяем, какие признаки были выбраны
|
||||
selected_features[subset_indices] += (lasso_cv.coef_ != 0)
|
||||
|
||||
# Вычисляем, какие признаки были выбраны чаще всего
|
||||
most_selected_features = np.where(selected_features > n_subsets / 2)[0]
|
||||
|
||||
return most_selected_features
|
||||
|
||||
def rank_to_dict(ranks, name):
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(-1, 1)).ravel()
|
||||
ranks = list(map(lambda x: round(x, 2), ranks))
|
||||
ranked_features = list(zip(name, ranks))
|
||||
return ranked_features
|
||||
|
||||
def mean_rank(ranks):
|
||||
total = sum(rank for _, rank in ranks)
|
||||
return total / len(ranks)
|
||||
|
||||
# Переключатели
|
||||
lasso_check = st.checkbox("Лассо")
|
||||
random_lasso_check = st.checkbox("Случайное лассо")
|
||||
RFE_check = st.checkbox("Рекурсивное сокращение признаков")
|
||||
|
||||
# Результаты
|
||||
if lasso_check:
|
||||
model_lasso = Lasso(alpha=.05)
|
||||
model_lasso.fit(X, Y)
|
||||
rank = rank_to_dict(model_lasso.coef_, names)
|
||||
mean = mean_rank(rank)
|
||||
st.write("Получившиеся оценки для каждого признака")
|
||||
st.table(rank)
|
||||
st.write("Средняя оценка: ", mean)
|
||||
|
||||
if random_lasso_check:
|
||||
selected_features = random_lasso(X, Y)
|
||||
X_subset = X[:, selected_features]
|
||||
lasso_cv = LassoCV(alphas=[0.05])
|
||||
lasso_cv.fit(X_subset, Y)
|
||||
rank = rank_to_dict(lasso_cv.coef_, [names[i] for i in selected_features])
|
||||
mean = mean_rank(rank)
|
||||
st.write("Получившиеся оценки")
|
||||
st.table(rank)
|
||||
st.write("Средняя оценка: ", mean)
|
||||
|
||||
if RFE_check:
|
||||
model_lasso = Lasso(alpha=0.05)
|
||||
rfe = RFE(model_lasso, n_features_to_select=4)
|
||||
rfe.fit(X, Y)
|
||||
selected_feature_indices = rfe.support_
|
||||
selected_feature_names = [name for i, name in enumerate(names) if selected_feature_indices[i]]
|
||||
rank = rank_to_dict(rfe.ranking_, selected_feature_names)
|
||||
mean = mean_rank(rank)
|
||||
st.write("Получившиеся оценки")
|
||||
st.table(rank)
|
||||
st.write("Средняя оценка: ", mean)
|
||||
|
||||
56
gordeeva_anna_lab_2/readme.md
Normal file
@@ -0,0 +1,56 @@
|
||||
## Задание
|
||||
Модели:
|
||||
* Лассо (Lasso)
|
||||
* Случайное лассо (RandomizedLasso)
|
||||
* Рекурсивное сокращение признаков (Recursive Feature Elimination – RFE)
|
||||
|
||||
## В чем различие каждой модели
|
||||
|
||||
Лассо (Lasso) автоматически отбирает наиболее важные признаки и уменьшает влияние менее важных.
|
||||
|
||||
Случайное лассо (RandomizedLasso) случайным образом выбирает подмножества признаков из исходных данных и применяет Лассо к каждому из них. Затем он объединяет результаты и определяет, какие признаки были выбраны чаще всего.
|
||||
|
||||
Рекурсивное сокращение признаков (Recursive Feature Elimination – RFE) оценивает важность каждого признака. Затем он удаляет наименее важный признак и повторяет процесс, пока не останется желаемое количество признаков.
|
||||
|
||||
|
||||
## Библиотеки
|
||||
Streamlit. Предоставляет простой способ создания веб-приложений для визуализации данных.
|
||||
|
||||
Numpy. Предоставляет возможность работать с массивами и матрицами.
|
||||
|
||||
Sklearn. Предоставляет инструменты и алгоритмы, которые упрощают задачи, связанные с машинным обучением.
|
||||
|
||||
## Функционал
|
||||
* Генерация исходных данных из 750 строк-наблюдений и 14 столбцов-признаков
|
||||
* Создание и обучение таких моделей, как лассо, случайное лассо и рекурсивное сокращение признаков.
|
||||
* Вывод получившихся оценок для признаков и средней оценки.
|
||||
|
||||
## Запуск
|
||||
Перед запуском необходимо запустить виртуальную среду venv. Так как я использую streamlit, то для запуска необходимо в терминал прописать следующую строку:
|
||||
```
|
||||
streamlit run lab1.py
|
||||
```
|
||||
Приложение развернется на локальном сервере и автоматически откроется в браузере.
|
||||
|
||||
## Скриншоты работы программы
|
||||
Лассо (Lasso)
|
||||
|
||||

|
||||
|
||||
Случайное лассо (RandomizedLasso)
|
||||
|
||||

|
||||
|
||||
Рекурсивное сокращение признаков (Recursive Feature Elimination – RFE)
|
||||
|
||||

|
||||
|
||||
## Вывод
|
||||
Модель лассо выводит все 14 признаков, наиболее важными признаками оказались под индексом
|
||||
1, 2, 4 и 5. Самый важный признак под номером 4. Средняя оценка по всем признакам 0.19.
|
||||
|
||||
Модель случайное лассо выводит наиболее важные признаки, такими признаками являются 1, 2, 4 и 5. Средняя оценка же по этим признакам равна 0.53. Она выше, так как мы исключаем маловажные признаки.
|
||||
|
||||
Модель рекурсивного сокращения признаков выводит 4 признака, так как я указала именно вывод 4 признаков в коде программы. Таким образом, модель отсекает маловажные признаки. Самым важным признаком оказался под номером 4. Средняя оценка: 0.25.
|
||||
|
||||
Как итог, можно сказать, что наиболее важными признаками являются 1, 2, 4 и 5. А самым важным из них является признак под номером 4.
|
||||
36
gusev_vladislav_lab_2/README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
### Вариант 9
|
||||
### Задание на лабораторную работу:
|
||||
Выполнить ранжирование признаков с помощью указанных по варианту моделей:
|
||||
- Лассо (Lasso)
|
||||
- Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
- Линейная корреляция (f_regression)
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
Выполняем файл gusev_vladislav_lab_2.py, в консоль будут выведены результаты.
|
||||
|
||||
### Технологии
|
||||
NumPy - библиотека для работы с многомерными массивами. Sklearn - библиотека с большим количеством алгоритмов машинного обучения.
|
||||
|
||||
### По коду
|
||||
В начале генерируем исходные данные: 750 строк-наблюдений и 14 столбцов-признаков, задаем функцию-выход: регрессионную проблему Фридмана, добавляем зависимость признаков
|
||||
|
||||
Далее создаем пустой словарь для хранения рангов признаков, используем методы из библиотеки Sklearn: Lasso, RandomForestRegressor и f_regression для задания по варианту.
|
||||
|
||||
Далее необходимо объявить функцию def rank_to_dict(ranks, names): для соотнесения нашего списка рангов и списка оценок по признакам. Возвращает он словарь типа (имя_признака: оценка_признака) и оценки приведены к единому диапазону от 0 до 1 и округлены до сотых.
|
||||
|
||||
В конце формируем среднее по каждому признаку, сортируем по убыванию и выводим на экран.
|
||||
|
||||
Пример:
|
||||
|
||||

|
||||
|
||||
Признаки х4 и х14 имеют наивысшие ранги, что говорит об их наибольшей значимости для решения задачи
|
||||
|
||||
Далее x2 и x12 занимают второе место по значимости (средняя значимость)
|
||||
|
||||
х1, х11 ниже среднего
|
||||
|
||||
х5, х8, х7 низкая значимость
|
||||
|
||||
х9, х3, х13, х10, х6 очень низкая значимость
|
||||
|
||||
53
gusev_vladislav_lab_2/gusev_vladislav_lab_2.py
Normal file
@@ -0,0 +1,53 @@
|
||||
from sklearn.linear_model import Lasso
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.feature_selection import f_regression
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import numpy as np
|
||||
|
||||
#генерируем исходные данные: 750 строк-наблюдений и 14 столбцов-признаков
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
#Задаем функцию-выход: регрессионную проблему Фридмана
|
||||
Y = (10 * np.sin(np.pi*X[:,0]*X[:,1]) + 20*(X[:,2] - .5)**2 +
|
||||
10*X[:,3] + 5*X[:,4]**5 + np.random.normal(0,1))
|
||||
#Добавляем зависимость признаков
|
||||
X[:,10:] = X[:,:4] + np.random.normal(0, .025, (size,4))
|
||||
|
||||
names = ["x%s" % i for i in range(1,15)]
|
||||
#Создается пустой словарь для хранения рангов признаков
|
||||
ranks = {}
|
||||
|
||||
#Lasso
|
||||
lasso = Lasso(alpha=0.5)
|
||||
lasso.fit(X, Y)
|
||||
ranks["Lasso"] = dict(zip(names, lasso.coef_))
|
||||
#Случайные деревья
|
||||
rf = RandomForestRegressor(n_estimators=100)
|
||||
rf.fit(X, Y)
|
||||
ranks["Random Forest"] = dict(zip(names, rf.feature_importances_))
|
||||
#Линейная корреляция
|
||||
f_scores, p_values = f_regression(X, Y)
|
||||
ranks["f_regression"] = dict(zip(names, f_scores))
|
||||
|
||||
def rank_to_dict(ranks, names):
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14,1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
mean = {}
|
||||
for key, value in ranks.items():
|
||||
for item in value.items():
|
||||
if(item[0] not in mean):
|
||||
mean[item[0]] = 0
|
||||
mean[item[0]] += item[1]
|
||||
|
||||
|
||||
sorted_mean = sorted(mean.items(), key=lambda x: x[1], reverse=True)
|
||||
result = {}
|
||||
for item in sorted_mean:
|
||||
result[item[0]] = item[1]
|
||||
print(f'{item[0]}: {item[1]}')
|
||||
|
||||
BIN
gusev_vladislav_lab_2/img.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
27
gusev_vladislav_lab_3/README.md
Normal file
@@ -0,0 +1,27 @@
|
||||
### Вариант 9
|
||||
### Задание на лабораторную работу:
|
||||
Решите с помощью библиотечной реализации дерева решений задачу: Запрограммировать дерево решений как минимум на 99% ваших данных для задачи: Зависимость глубины алмаза (depth) от длины (x), ширины (y) и высоты алмаза (z) . Проверить работу модели на оставшемся проценте, сделать вывод.
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
Выполняем файл gusev_vladislav_lab_3.py, решение будет в консоли.
|
||||
|
||||
### Технологии
|
||||
Sklearn - библиотека с большим количеством алгоритмов машинного обучения. Нам понадобится библиотека для дерева решения регрессии sklearn.tree.DecisionTreeRegressor.
|
||||
|
||||
### По коду
|
||||
1) Для начала загружаем данные из csv файла
|
||||
2) Разделеям данные на признаки (X) и целевую переменную (y)
|
||||
3) Разделяем данные на обучающее и тестовые
|
||||
4) Обучаем дерево регрессией (model)
|
||||
5) Выводим важность признаков, предсказание значений на тестовой выборке и оценку производительности модели
|
||||
|
||||
Пример:
|
||||
|
||||

|
||||
|
||||
### Вывод
|
||||
- score: ~0.88. Это мера того, насколько хорошо модель соответствует данным. По значению 88% можно сказать, что модель хорошо соответствует данным.
|
||||
- feature_importances: ~0.26, ~0.34, ~0,39. Это говорит о важности признаков для нашей модели. Можно сказать, что высота (z) имеет наибольшую важность.
|
||||
- Mean Squared Error: 0.22. Это ошибка модели. Это говорит о том, что модель в среднем ошибается в 22% случаев.
|
||||
|
||||
По итогу можно сказать, что модель отработала хорошо, из-за score ~0.88.
|
||||
53944
gusev_vladislav_lab_3/diamonds_prices.csv
Normal file
31
gusev_vladislav_lab_3/gusev_vladislav_lab_3.py
Normal file
@@ -0,0 +1,31 @@
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.tree import DecisionTreeRegressor
|
||||
from sklearn.metrics import mean_squared_error
|
||||
|
||||
# Загрузка данных из csv-файла
|
||||
data = pd.read_csv('diamonds_prices.csv', index_col='diamond_id')
|
||||
|
||||
# Разделение данных на признаки (X) и целевую переменную (y)
|
||||
X = data[['x', 'y', 'z']]
|
||||
|
||||
print (X.head())
|
||||
y = data['depth']
|
||||
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=42)
|
||||
|
||||
#Решение с помощью дерева регрессии
|
||||
model = DecisionTreeRegressor()
|
||||
model.fit(X_train, y_train)
|
||||
test_score = model.score(X_test, y_test)
|
||||
# Получение важности признаков
|
||||
feature_importances = model.feature_importances_
|
||||
# Предсказание значений на тестовой выборке
|
||||
y_pred = model.predict(X_test)
|
||||
# Оценка производительности модели
|
||||
mse = mean_squared_error(y_test, y_pred)
|
||||
|
||||
print("score", test_score)
|
||||
print("feature_importances", feature_importances)
|
||||
print("Mean Squared Error: {:.2f}".format(mse))
|
||||
BIN
gusev_vladislav_lab_3/img.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
24
gusev_vladislav_lab_5/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
### Вариант 9
|
||||
### Задание на лабораторную работу:
|
||||
Использовать регрессию по варианту для данных из курсовой работы. Самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной задачи.
|
||||
### Как запустить лабораторную работу:
|
||||
Выполняем файл gusev_vladislav_lab_5.py, будет выведен график на экран.
|
||||
|
||||
### Технологии
|
||||
NumPy - библиотека для работы с многомерными массивами. Mathplotlib - библиотека для визуализации данных двумерной и трехмерной графикой. Sklearn - библиотека с большим количеством алгоритмов машинного обучения.
|
||||
|
||||
### Задача
|
||||
Мною было принято решение посмотреть, как зависит
|
||||
### По коду
|
||||
1) Для начала загружаем данные из csv файла
|
||||
2) Разделяем данные на обучающее и тестовые
|
||||
3) Рескейлим данные из столбца price, который был в диапозоне от 370 до 2700 к диапозону от 0 до 1
|
||||
4) Обучаем модель, находим R^2 (среднеквадратическая ошибка) и коэффициент детерминации
|
||||
5) Выводим графики
|
||||
|
||||
|
||||

|
||||
|
||||
### Вывод
|
||||
- Среднеквадарическая ошибка получилась довольно низкой, что говорит нам о точности тестовых и предсказанных значений, однако коэффициент детерминации получился крайне низким, даже отрицательным. Это значит, что модель не понимает зависимости данных.
|
||||
- Итог: гребневая модель регресси не применима к нашей задаче
|
||||
53944
gusev_vladislav_lab_5/diamonds_prices.csv
Normal file
34
gusev_vladislav_lab_5/gusev_vladislav_lab_5.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import pandas as pd
|
||||
|
||||
from sklearn.linear_model import Ridge
|
||||
from sklearn import metrics
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
# загрузка данных из файла
|
||||
data = pd.read_csv('diamonds_prices.csv')
|
||||
scaler = MinMaxScaler()
|
||||
|
||||
x_train = data[['price', 'carat', 'depth']].iloc[0:round(len(data) / 100 * 99)]
|
||||
y_train = data['table'].iloc[0:round(len(data) / 100 * 99)]
|
||||
y_train = scaler.fit_transform(y_train.values.reshape(-1, 1)) # приводим к виду от 0 до 1
|
||||
y_train = y_train.flatten()
|
||||
x_test = data[['price', 'carat', 'depth']].iloc[round(len(data) / 100 * 99):len(data)]
|
||||
y_test = data['table'].iloc[round(len(data) / 100 * 99):len(data)]
|
||||
y_test = scaler.fit_transform(y_test.values.reshape(-1, 1)) # приводим к виду от 0 до 1
|
||||
y_test = y_test.flatten()
|
||||
|
||||
rid = Ridge(alpha=1.0)
|
||||
rid.fit(x_train.values, y_train)
|
||||
y_predict = rid.predict(x_test.values)
|
||||
|
||||
mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # рассчёт Ср^2
|
||||
coeff_determ = np.round(metrics.r2_score(y_test, y_predict), 2) # рассчёт коэффициента детерминации
|
||||
|
||||
plt.plot(y_test, c="red", label="y тестовые ")
|
||||
plt.plot(y_predict, c="green", label="y предсказанные \n"
|
||||
"Ср^2 = " + str(mid_square) + "\n"
|
||||
"Coeff_determ = " + str(coeff_determ))
|
||||
plt.legend(loc='upper right')
|
||||
plt.title("Гребневая регрессия")
|
||||
plt.show()
|
||||
BIN
gusev_vladislav_lab_5/img.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
35
ilbekov_dmitriy_lab_1/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Лабораторная работа 1
|
||||
### Вариант 10
|
||||
|
||||
### Данные:
|
||||
- make_moons (noise=0.3, random_state=rs)
|
||||
### Модели:
|
||||
- Линейную регрессию
|
||||
- Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha = 0.01)
|
||||
- Многослойный персептрон со 100-а нейронами в скрытом слое (alpha = 0.01)
|
||||
### Запуск
|
||||
- Запустить файл lab1.py
|
||||
|
||||
### Технологии
|
||||
- Язык - 'Python'
|
||||
- Библиотеки sklearn, matplotlib, numpy
|
||||
|
||||
### Что делает
|
||||
Программа генерирует набор данных с помощью make_moons(), после чего строит графики для моделей, указанных в задании варианта и выводит в консоль качество данных моделей
|
||||
|
||||
### Пример работы
|
||||
Вывод в консоль:
|
||||
|
||||
Точность:
|
||||
|
||||
LinearRegression: 0.1997177824893414
|
||||
|
||||
Multi Layer Perceptron 10 нейронов: 0.45
|
||||
|
||||
Multi Layer Perceptron 100 нейронов: 0.8
|
||||
|
||||
Лучший результат показала модель Multi Layer Perceptron на 100 нейронах
|
||||
|
||||
Ниже представлены графики, выводимые программой
|
||||
|
||||

|
||||
BIN
ilbekov_dmitriy_lab_1/console.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
ilbekov_dmitriy_lab_1/graphics.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
103
ilbekov_dmitriy_lab_1/lab1.py
Normal file
@@ -0,0 +1,103 @@
|
||||
import numpy as np
|
||||
from sklearn import metrics
|
||||
from sklearn.datasets import make_moons
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.metrics import accuracy_score
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
#Задание случайного состояния
|
||||
rs = 35
|
||||
# Генерации синтетического набора данных в форме двух полумесяцев
|
||||
# noise - уровень шума данных
|
||||
# random_state устанавливается в rs для воспроизводимости данных
|
||||
X, y = make_moons(noise=0.3, random_state=rs)
|
||||
|
||||
# test_size какой процент данных пойдет в тестирование
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=rs)
|
||||
|
||||
# Подготовка для визуализации
|
||||
x_minimal, x_maximum = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
|
||||
y_minimal, y_maximum = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
|
||||
xx, yy = np.meshgrid(np.arange(x_minimal, x_maximum, 0.02), np.arange(y_minimal, y_maximum, 0.02))
|
||||
|
||||
|
||||
# ЛИНЕЙНАЯ РЕГРЕССИЯ
|
||||
|
||||
# Инициализация модели
|
||||
linear_regression = LinearRegression()
|
||||
# Обучение
|
||||
linear_regression.fit(X_train, y_train)
|
||||
# Предсказание
|
||||
y_pred_linear_regression = linear_regression.predict(X_test)
|
||||
# Оценка точности (MSE)
|
||||
accuracy_linear_regression = metrics.mean_squared_error(y_test, y_pred_linear_regression)
|
||||
# Предсказание класса для каждой точки в сетке графика и изменение формы результата
|
||||
Z_linear_regression = linear_regression.predict(np.c_[xx.ravel(), yy.ravel()])
|
||||
Z_linear_regression = Z_linear_regression.reshape(xx.shape)
|
||||
|
||||
|
||||
# МНОГОСЛОЙНЫЙ ПЕРСЕПТРОН (10)
|
||||
|
||||
# Инициализация модели
|
||||
multi_layer_perceptron_10 = MLPClassifier(hidden_layer_sizes=(10,), alpha=0.01, random_state=rs)
|
||||
# Обучение
|
||||
multi_layer_perceptron_10.fit(X_train, y_train)
|
||||
# Предсказание
|
||||
y_pred_multi_layer_perceptron_10 = multi_layer_perceptron_10.predict(X_test)
|
||||
# Оценка точности каждой модели сравнивается с истинными метками классов на тестовой выборке
|
||||
accuracy_mlp_10 = accuracy_score(y_test, y_pred_multi_layer_perceptron_10)
|
||||
# Предсказание класса для каждой точки в сетке графика и изменение формы результата
|
||||
Z_mlp_10 = multi_layer_perceptron_10.predict(np.c_[xx.ravel(), yy.ravel()])
|
||||
Z_mlp_10 = Z_mlp_10.reshape(xx.shape)
|
||||
|
||||
|
||||
# МНОГОСЛОЙНЫЙ ПЕРСЕПТРОН (100)
|
||||
|
||||
# Инициализация модели
|
||||
multi_layer_perceptron_100 = MLPClassifier(hidden_layer_sizes=(100,), alpha=0.01, random_state=rs)
|
||||
# Обучение
|
||||
multi_layer_perceptron_100.fit(X_train, y_train)
|
||||
# Предсказание
|
||||
y_pred_multi_layer_perceptron_100 = multi_layer_perceptron_100.predict(X_test)
|
||||
# Оценка точности (MSE)
|
||||
accuracy_mlp_100 = accuracy_score(y_test, y_pred_multi_layer_perceptron_100)
|
||||
# Предсказание класса для каждой точки в сетке графика и изменение формы результата
|
||||
Z_mlp_100 = multi_layer_perceptron_100.predict(np.c_[xx.ravel(), yy.ravel()])
|
||||
Z_mlp_100 = Z_mlp_100.reshape(xx.shape)
|
||||
|
||||
|
||||
# ВЫВОД: результаты оценки точности (в консоли) и график
|
||||
print("Точность: ")
|
||||
print("LinearRegression:", accuracy_linear_regression)
|
||||
print("Multi Layer Perceptron 10 нейронов:", accuracy_mlp_10)
|
||||
print("Multi Layer Perceptron 100 нейронов:", accuracy_mlp_100)
|
||||
|
||||
plt.figure(figsize=(12, 9))
|
||||
plt.subplot(221)
|
||||
plt.contourf(xx, yy, Z_linear_regression, alpha=0.8)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, edgecolors='k', alpha=0.6)
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, edgecolors='k')
|
||||
plt.title('Линейная регрессия')
|
||||
plt.xlabel('Признак 1')
|
||||
plt.ylabel('Признак 2')
|
||||
|
||||
plt.subplot(222)
|
||||
plt.contourf(xx, yy, Z_mlp_10, alpha=0.8)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, edgecolors='k', alpha=0.6)
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, edgecolors='k')
|
||||
plt.title('MLP 10 нейронов')
|
||||
plt.xlabel('Признак 1')
|
||||
plt.ylabel('Признак 2')
|
||||
|
||||
plt.subplot(223)
|
||||
plt.contourf(xx, yy, Z_mlp_100, alpha=0.8)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, edgecolors='k', alpha=0.6)
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, edgecolors='k')
|
||||
plt.title('MLP 100 нейронов')
|
||||
plt.xlabel('Признак 1')
|
||||
plt.ylabel('Признак 2')
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
23
ilbekov_dmitriy_lab_2/README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Лабораторная работа 2
|
||||
### Вариант 10
|
||||
|
||||
### Задание:
|
||||
- Выполнить ранжирование признаков с помощью указанных по варианту моделей
|
||||
### Модели:
|
||||
- Линейная регрессия (LinearRegression)
|
||||
- Лассо (Lasso)
|
||||
- Рекурсивное сокращение признаков (Recursive Feature Elimination –RFE)
|
||||
### Запуск
|
||||
- Запустить файл lab2.py
|
||||
|
||||
### Технологии
|
||||
- Язык - 'Python'
|
||||
- Библиотеки sklearn, numpy
|
||||
|
||||
### Что делает
|
||||
Программа выполняет ранжирование признаков набора данных с помощью моделей, указанных в задании варианта и выводит в консоль результаты ранжирования и топ 4 самых выжных признака
|
||||
|
||||
### Пример работы
|
||||
Пример работы представлен в виде скриншота:
|
||||
|
||||

|
||||
BIN
ilbekov_dmitriy_lab_2/console.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
80
ilbekov_dmitriy_lab_2/lab2.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from sklearn.linear_model import LinearRegression, Lasso
|
||||
from sklearn.feature_selection import RFE
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import numpy as np
|
||||
|
||||
|
||||
# Генерация синтетических данных
|
||||
def create_data():
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
Y = (10 * np.sin(np.pi * X[:, 0] * X[:, 1]) + 20 * (X[:, 2] - .5) ** 2 +
|
||||
10 * X[:, 3] + 5 * X[:, 4] ** 5 + np.random.normal(0, 1))
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
return X, Y
|
||||
|
||||
|
||||
# Нормализация значений рангов
|
||||
def rank_to_dict(ranks):
|
||||
ranks = np.abs(ranks)
|
||||
names = ["x%s" % i for i in range(1, 15)]
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
|
||||
# Вывод отсортированных признаков по важности в табличном виде
|
||||
def print_sorted_features_by_models(ranks_by_model: {}):
|
||||
sorted_ranks = sorted(ranks_by_model.items(), key=lambda item: sum(item[1].values()), reverse=True)
|
||||
|
||||
print("{:<40}".format(""), end="")
|
||||
for i in range(1, 15):
|
||||
print("{:<10}".format(i), end="")
|
||||
print()
|
||||
|
||||
for model, rank_dict in sorted_ranks:
|
||||
sorted_features = sorted(rank_dict.items(), key=lambda item: item[1], reverse=True)
|
||||
print("{:<40}".format(model), end="")
|
||||
for feature, rank in sorted_features:
|
||||
print("{:<10}".format(f"{feature}: {rank}"), end="")
|
||||
print()
|
||||
print()
|
||||
|
||||
|
||||
# Получение средних значений моделей и ТОП 4 самых важных признака
|
||||
def average_values(ranks_by_model: {}):
|
||||
mean = {}
|
||||
for model, rank_dict in ranks_by_model.items():
|
||||
for feature, rank in rank_dict.items():
|
||||
if feature not in mean:
|
||||
mean[feature] = 0
|
||||
mean[feature] += rank
|
||||
mean = {feature: round(rank / len(ranks_by_model), 2) for feature, rank in mean.items()}
|
||||
mean_sorted = sorted(mean.items(), key=lambda item: item[1], reverse=True)
|
||||
print("Средние значения")
|
||||
print(mean_sorted)
|
||||
print("\nТОП 4 самых важных признака по среднему значению: ")
|
||||
for feature, rank in mean_sorted[:4]:
|
||||
print('Признак - {0}, значение важности - {1}'.format(feature, rank))
|
||||
|
||||
|
||||
X, Y = create_data()
|
||||
# ЛИНЕЙНАЯ РЕГРЕССИЯ
|
||||
linear_regression = LinearRegression()
|
||||
linear_regression.fit(X, Y)
|
||||
# ЛАССО
|
||||
lasso = Lasso(alpha=.01)
|
||||
lasso.fit(X, Y)
|
||||
# РЕКУРСИВНОЕ СОКРАЩЕНИЕ ПРИЗНАКОВ
|
||||
rfe = RFE(linear_regression)
|
||||
rfe.fit(X, Y)
|
||||
|
||||
ranks_by_model = {
|
||||
"Линейная регрессия": rank_to_dict(linear_regression.coef_),
|
||||
"Лассо": rank_to_dict(lasso.coef_),
|
||||
"РЕКУРСИВНОЕ СОКРАЩЕНИЕ ПРИЗНАКОВ (RFE)": rank_to_dict(rfe.ranking_),
|
||||
}
|
||||
print_sorted_features_by_models(ranks_by_model)
|
||||
average_values(ranks_by_model)
|
||||
869
ilbekov_dmitriy_lab_3/F1DriversDataset.csv
Normal file
@@ -0,0 +1,869 @@
|
||||
Driver,Nationality,Seasons,Championships,Race_Entries,Race_Starts,Pole_Positions,Race_Wins,Podiums,Fastest_Laps,Points,Active,Championship Years,Decade,Pole_Rate,Start_Rate,Win_Rate,Podium_Rate,FastLap_Rate,Points_Per_Entry,Years_Active,Champion
|
||||
Carlo Abate,Italy,"[1962, 1963]",0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
George Abecassis,United Kingdom,"[1951, 1952]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Kenny Acheson,United Kingdom,"[1983, 1985]",0.0,10.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.3,0.0,0.0,0.0,0.0,2,False
|
||||
Andrea de Adamich,Italy,"[1968, 1970, 1971, 1972, 1973]",0.0,36.0,30.0,0.0,0.0,0.0,0.0,6.0,False,,1970,0.0,0.8333333333333334,0.0,0.0,0.0,0.16666666666666666,5,False
|
||||
Philippe Adams,Belgium,[1994],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Walt Ader,United States,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Kurt Adolff,West Germany,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Fred Agabashian,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957]",0.0,9.0,8.0,1.0,0.0,0.0,0.0,1.5,False,,1950,0.1111111111111111,0.8888888888888888,0.0,0.0,0.0,0.16666666666666666,8,False
|
||||
Kurt Ahrens Jr.,West Germany,"[1966, 1967, 1968, 1969]",0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,4,False
|
||||
Jack Aitken,United Kingdom,[2020],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Christijan Albers,Netherlands,"[2005, 2006, 2007]",0.0,46.0,46.0,0.0,0.0,0.0,0.0,4.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.08695652173913043,3,False
|
||||
Alexander Albon,Thailand,"[2019, 2020, 2022]",0.0,61.0,60.0,0.0,0.0,2.0,0.0,202.0,True,,2020,0.0,0.9836065573770492,0.0,0.03278688524590164,0.0,3.3114754098360657,3,False
|
||||
Michele Alboreto,Italy,"[1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994]",0.0,215.0,194.0,2.0,5.0,23.0,5.0,186.5,False,,1990,0.009302325581395349,0.9023255813953488,0.023255813953488372,0.10697674418604651,0.023255813953488372,0.8674418604651163,14,False
|
||||
Jean Alesi,France,"[1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001]",0.0,202.0,201.0,2.0,1.0,32.0,4.0,241.0,False,,2000,0.009900990099009901,0.995049504950495,0.0049504950495049506,0.15841584158415842,0.019801980198019802,1.193069306930693,13,False
|
||||
Jaime Alguersuari,Spain,"[2009, 2010, 2011]",0.0,46.0,46.0,0.0,0.0,0.0,0.0,31.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.6739130434782609,3,False
|
||||
Philippe Alliot,France,"[1984, 1985, 1986, 1987, 1988, 1989, 1990, 1993, 1994]",0.0,116.0,109.0,0.0,0.0,0.0,0.0,7.0,False,,1990,0.0,0.9396551724137931,0.0,0.0,0.0,0.0603448275862069,9,False
|
||||
Cliff Allison,United Kingdom,"[1958, 1959, 1960, 1961]",0.0,18.0,16.0,0.0,0.0,1.0,0.0,11.0,False,,1960,0.0,0.8888888888888888,0.0,0.05555555555555555,0.0,0.6111111111111112,4,False
|
||||
Fernando Alonso,Spain,"[2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2021, 2022]",2.0,359.0,356.0,22.0,32.0,99.0,23.0,2076.0,True,"[2005, 2006]",2010,0.06128133704735376,0.9916434540389972,0.08913649025069638,0.2757660167130919,0.06406685236768803,5.782729805013927,19,True
|
||||
Giovanna Amati,Italy,[1992],0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
George Amick,United States,[1958],0.0,2.0,1.0,0.0,0.0,1.0,0.0,6.0,False,,1960,0.0,0.5,0.0,0.5,0.0,3.0,1,False
|
||||
Red Amick,United States,"[1959, 1960]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Chris Amon,New Zealand,"[1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976]",0.0,108.0,96.0,5.0,0.0,11.0,3.0,83.0,False,,1970,0.046296296296296294,0.8888888888888888,0.0,0.10185185185185185,0.027777777777777776,0.7685185185185185,14,False
|
||||
Bob Anderson,United Kingdom,"[1963, 1964, 1965, 1966, 1967]",0.0,29.0,25.0,0.0,0.0,1.0,0.0,8.0,False,,1960,0.0,0.8620689655172413,0.0,0.034482758620689655,0.0,0.27586206896551724,5,False
|
||||
Conny Andersson,Sweden,"[1976, 1977]",0.0,5.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.2,0.0,0.0,0.0,0.0,2,False
|
||||
Emil Andres,United States,[1950],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Mario Andretti,United States,"[1968, 1969, 1970, 1971, 1972, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982]",1.0,131.0,128.0,18.0,12.0,19.0,10.0,180.0,False,[1978],1980,0.13740458015267176,0.9770992366412213,0.0916030534351145,0.1450381679389313,0.07633587786259542,1.3740458015267176,14,True
|
||||
Michael Andretti,United States,[1993],0.0,13.0,13.0,0.0,0.0,1.0,0.0,7.0,False,,1990,0.0,1.0,0.0,0.07692307692307693,0.0,0.5384615384615384,1,False
|
||||
Keith Andrews,United States,"[1955, 1956]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Elio de Angelis,Italy,"[1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986]",0.0,109.0,108.0,3.0,2.0,9.0,0.0,122.0,False,,1980,0.027522935779816515,0.9908256880733946,0.01834862385321101,0.08256880733944955,0.0,1.1192660550458715,8,False
|
||||
Marco Apicella,Italy,[1993],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Mário de Araújo Cabral,Portugal,"[1959, 1960, 1963, 1964]",0.0,5.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8,0.0,0.0,0.0,0.0,4,False
|
||||
Frank Armi,United States,[1954],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Chuck Arnold,United States,[1959],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
René Arnoux,France,"[1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989]",0.0,164.0,149.0,18.0,7.0,22.0,12.0,181.0,False,,1980,0.10975609756097561,0.9085365853658537,0.042682926829268296,0.13414634146341464,0.07317073170731707,1.103658536585366,12,False
|
||||
Peter Arundell,United Kingdom,"[1963, 1964, 1966]",0.0,13.0,11.0,0.0,0.0,2.0,0.0,12.0,False,,1960,0.0,0.8461538461538461,0.0,0.15384615384615385,0.0,0.9230769230769231,3,False
|
||||
Alberto Ascari,Italy,"[1950, 1951, 1952, 1953, 1954, 1955]",2.0,33.0,32.0,14.0,13.0,17.0,12.0,107.64,False,"[1952, 1953]",1950,0.42424242424242425,0.9696969696969697,0.3939393939393939,0.5151515151515151,0.36363636363636365,3.2618181818181817,6,True
|
||||
Peter Ashdown,United Kingdom,[1959],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ian Ashley,United Kingdom,"[1974, 1975, 1976, 1977]",0.0,11.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.36363636363636365,0.0,0.0,0.0,0.0,4,False
|
||||
Gerry Ashmore,United Kingdom,"[1961, 1962]",0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.75,0.0,0.0,0.0,0.0,2,False
|
||||
Bill Aston,United Kingdom,[1952],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Richard Attwood,United Kingdom,"[1964, 1965, 1967, 1968, 1969]",0.0,17.0,16.0,0.0,0.0,1.0,1.0,11.0,False,,1970,0.0,0.9411764705882353,0.0,0.058823529411764705,0.058823529411764705,0.6470588235294118,5,False
|
||||
Manny Ayulo,United States,"[1951, 1952, 1953, 1954]",0.0,6.0,4.0,0.0,0.0,1.0,0.0,2.0,False,,1950,0.0,0.6666666666666666,0.0,0.16666666666666666,0.0,0.3333333333333333,4,False
|
||||
Luca Badoer,Italy,"[1993, 1995, 1996, 1999, 2009]",0.0,58.0,50.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.8620689655172413,0.0,0.0,0.0,0.0,5,False
|
||||
Giancarlo Baghetti,Italy,"[1961, 1962, 1963, 1964, 1965, 1966, 1967]",0.0,21.0,21.0,0.0,1.0,1.0,1.0,14.0,False,,1960,0.0,1.0,0.047619047619047616,0.047619047619047616,0.047619047619047616,0.6666666666666666,7,False
|
||||
Julian Bailey,United Kingdom,"[1988, 1991]",0.0,20.0,7.0,0.0,0.0,0.0,0.0,1.0,False,,1990,0.0,0.35,0.0,0.0,0.0,0.05,2,False
|
||||
Mauro Baldi,Italy,"[1982, 1983, 1984, 1985]",0.0,41.0,36.0,0.0,0.0,0.0,0.0,5.0,False,,1980,0.0,0.8780487804878049,0.0,0.0,0.0,0.12195121951219512,4,False
|
||||
Bobby Ball,United States,"[1951, 1952]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,2.0,False,,1950,0.0,1.0,0.0,0.0,0.0,1.0,2,False
|
||||
Marcel Balsa,France,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Lorenzo Bandini,Italy,"[1961, 1962, 1963, 1964, 1965, 1966, 1967]",0.0,42.0,42.0,1.0,1.0,8.0,2.0,58.0,False,,1960,0.023809523809523808,1.0,0.023809523809523808,0.19047619047619047,0.047619047619047616,1.380952380952381,7,False
|
||||
Henry Banks,United States,"[1950, 1951, 1952]",0.0,5.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6,0.0,0.0,0.0,0.0,3,False
|
||||
Fabrizio Barbazza,Italy,"[1991, 1993]",0.0,20.0,8.0,0.0,0.0,0.0,0.0,2.0,False,,1990,0.0,0.4,0.0,0.0,0.0,0.1,2,False
|
||||
John Barber,United Kingdom,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Skip Barber,United States,"[1971, 1972]",0.0,6.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.8333333333333334,0.0,0.0,0.0,0.0,2,False
|
||||
Paolo Barilla,Italy,"[1989, 1990]",0.0,15.0,9.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.6,0.0,0.0,0.0,0.0,2,False
|
||||
Rubens Barrichello,Brazil,"[1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011]",0.0,326.0,322.0,14.0,11.0,68.0,17.0,658.0,False,,2000,0.04294478527607362,0.9877300613496932,0.03374233128834356,0.2085889570552147,0.05214723926380368,2.01840490797546,19,False
|
||||
Michael Bartels,Germany,[1991],0.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Edgar Barth,"East Germany, West Germany","[1953, 1957, 1958, 1960, 1961, 1964]",0.0,7.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.7142857142857143,0.0,0.0,0.0,0.0,6,False
|
||||
Giorgio Bassi,Italy,[1965],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Erwin Bauer,West Germany,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Zsolt Baumgartner,Hungary,"[2003, 2004]",0.0,20.0,20.0,0.0,0.0,0.0,0.0,1.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.05,2,False
|
||||
Élie Bayol,France,"[1952, 1953, 1954, 1955, 1956]",0.0,8.0,7.0,0.0,0.0,0.0,0.0,2.0,False,,1950,0.0,0.875,0.0,0.0,0.0,0.25,5,False
|
||||
Don Beauman,United Kingdom,[1954],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Karl-Günther Bechem[g],West Germany,"[1952, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Jean Behra,France,"[1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959]",0.0,53.0,52.0,0.0,0.0,9.0,1.0,51.14,False,,1960,0.0,0.9811320754716981,0.0,0.16981132075471697,0.018867924528301886,0.9649056603773585,8,False
|
||||
Derek Bell,United Kingdom,"[1968, 1969, 1970, 1971, 1972, 1974]",0.0,16.0,9.0,0.0,0.0,0.0,0.0,1.0,False,,1970,0.0,0.5625,0.0,0.0,0.0,0.0625,6,False
|
||||
Stefan Bellof,West Germany,"[1984, 1985]",0.0,22.0,20.0,0.0,0.0,0.0,0.0,4.0,False,,1980,0.0,0.9090909090909091,0.0,0.0,0.0,0.18181818181818182,2,False
|
||||
Paul Belmondo,France,"[1992, 1994]",0.0,27.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.25925925925925924,0.0,0.0,0.0,0.0,2,False
|
||||
Tom Belsø,Denmark,"[1973, 1974]",0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.4,0.0,0.0,0.0,0.0,2,False
|
||||
Jean-Pierre Beltoise,France,"[1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974]",0.0,88.0,86.0,0.0,1.0,8.0,4.0,77.0,False,,1970,0.0,0.9772727272727273,0.011363636363636364,0.09090909090909091,0.045454545454545456,0.875,8,False
|
||||
Olivier Beretta,Monaco,[1994],0.0,10.0,9.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.9,0.0,0.0,0.0,0.0,1,False
|
||||
Allen Berg,Canada,[1986],0.0,9.0,9.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Georges Berger,Belgium,"[1953, 1954]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Gerhard Berger,Austria,"[1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997]",0.0,210.0,210.0,12.0,10.0,48.0,21.0,385.0,False,,1990,0.05714285714285714,1.0,0.047619047619047616,0.22857142857142856,0.1,1.8333333333333333,14,False
|
||||
Éric Bernard,France,"[1989, 1990, 1991, 1994]",0.0,47.0,45.0,0.0,0.0,1.0,0.0,10.0,False,,1990,0.0,0.9574468085106383,0.0,0.02127659574468085,0.0,0.2127659574468085,4,False
|
||||
Enrique Bernoldi,Brazil,"[2001, 2002]",0.0,29.0,28.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.9655172413793104,0.0,0.0,0.0,0.0,2,False
|
||||
Enrico Bertaggia,Italy,[1989],0.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Tony Bettenhausen,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,11.0,11.0,0.0,0.0,1.0,1.0,11.0,False,,1960,0.0,1.0,0.0,0.09090909090909091,0.09090909090909091,1.0,11,False
|
||||
Mike Beuttler,United Kingdom,"[1971, 1972, 1973]",0.0,29.0,28.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.9655172413793104,0.0,0.0,0.0,0.0,3,False
|
||||
Birabongse Bhanudej,Thailand,"[1950, 1951, 1952, 1953, 1954]",0.0,19.0,19.0,0.0,0.0,0.0,0.0,8.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.42105263157894735,5,False
|
||||
Jules Bianchi,France,"[2013, 2014]",0.0,34.0,34.0,0.0,0.0,0.0,0.0,2.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.058823529411764705,2,False
|
||||
Lucien Bianchi,Belgium,"[1959, 1960, 1961, 1962, 1963, 1965, 1968]",0.0,19.0,17.0,0.0,0.0,1.0,0.0,6.0,False,,1960,0.0,0.8947368421052632,0.0,0.05263157894736842,0.0,0.3157894736842105,7,False
|
||||
Gino Bianco,Brazil,[1952],0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Hans Binder,Austria,"[1976, 1977, 1978]",0.0,15.0,13.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.8666666666666667,0.0,0.0,0.0,0.0,3,False
|
||||
Clemente Biondetti,Italy,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Pablo Birger,Argentina,"[1953, 1955]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Art Bisch,United States,[1958],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Harry Blanchard,United States,[1959],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Michael Bleekemolen,Netherlands,"[1977, 1978]",0.0,5.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.2,0.0,0.0,0.0,0.0,2,False
|
||||
Alex Blignaut,South Africa,[1965],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Trevor Blokdyk,South Africa,"[1963, 1965]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Mark Blundell,United Kingdom,"[1991, 1993, 1994, 1995]",0.0,63.0,61.0,0.0,0.0,3.0,0.0,32.0,False,,1990,0.0,0.9682539682539683,0.0,0.047619047619047616,0.0,0.5079365079365079,4,False
|
||||
Raul Boesel,Brazil,"[1982, 1983]",0.0,30.0,23.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.7666666666666667,0.0,0.0,0.0,0.0,2,False
|
||||
Menato Boffa,Italy,[1961],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bob Bondurant,United States,"[1965, 1966]",0.0,9.0,9.0,0.0,0.0,0.0,0.0,3.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.3333333333333333,2,False
|
||||
Felice Bonetto,Italy,"[1950, 1951, 1952, 1953]",0.0,16.0,15.0,0.0,0.0,2.0,0.0,17.5,False,,1950,0.0,0.9375,0.0,0.125,0.0,1.09375,4,False
|
||||
Jo Bonnier,Sweden,"[1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971]",0.0,108.0,104.0,1.0,1.0,1.0,0.0,39.0,False,,1960,0.009259259259259259,0.9629629629629629,0.009259259259259259,0.009259259259259259,0.0,0.3611111111111111,16,False
|
||||
Roberto Bonomi,Argentina,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Juan Manuel Bordeu,Argentina,[1961],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Slim Borgudd,Sweden,"[1981, 1982]",0.0,15.0,10.0,0.0,0.0,0.0,0.0,1.0,False,,1980,0.0,0.6666666666666666,0.0,0.0,0.0,0.06666666666666667,2,False
|
||||
Luki Botha,South Africa,[1967],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Valtteri Bottas,Finland,"[2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]",0.0,202.0,201.0,20.0,10.0,67.0,19.0,1791.0,True,,2020,0.09900990099009901,0.995049504950495,0.04950495049504951,0.3316831683168317,0.09405940594059406,8.866336633663366,10,False
|
||||
Jean-Christophe Boullion,France,[1995],0.0,11.0,11.0,0.0,0.0,0.0,0.0,3.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.2727272727272727,1,False
|
||||
Sébastien Bourdais,France,"[2008, 2009]",0.0,27.0,27.0,0.0,0.0,0.0,0.0,6.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.2222222222222222,2,False
|
||||
Thierry Boutsen,Belgium,"[1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993]",0.0,164.0,163.0,1.0,3.0,15.0,1.0,132.0,False,,1990,0.006097560975609756,0.9939024390243902,0.018292682926829267,0.09146341463414634,0.006097560975609756,0.8048780487804879,11,False
|
||||
Johnny Boyd,United States,"[1955, 1956, 1957, 1958, 1959, 1960]",0.0,6.0,6.0,0.0,0.0,1.0,0.0,4.0,False,,1960,0.0,1.0,0.0,0.16666666666666666,0.0,0.6666666666666666,6,False
|
||||
David Brabham,Australia,"[1990, 1994]",0.0,30.0,24.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.8,0.0,0.0,0.0,0.0,2,False
|
||||
Gary Brabham,Australia,[1990],0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jack Brabham,Australia,"[1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970]",3.0,128.0,126.0,13.0,14.0,31.0,12.0,253.0,False,"[1959, 1960, 1966]",1960,0.1015625,0.984375,0.109375,0.2421875,0.09375,1.9765625,16,True
|
||||
Bill Brack,Canada,"[1968, 1969, 1972]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Ernesto Brambilla,Italy,"[1963, 1969]",0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
Vittorio Brambilla,Italy,"[1974, 1975, 1976, 1977, 1978, 1979, 1980]",0.0,79.0,74.0,1.0,1.0,1.0,1.0,15.5,False,,1980,0.012658227848101266,0.9367088607594937,0.012658227848101266,0.012658227848101266,0.012658227848101266,0.1962025316455696,7,False
|
||||
Toni Branca,Switzerland,"[1950, 1951]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Gianfranco Brancatelli,Italy,[1979],0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Eric Brandon,United Kingdom,"[1952, 1954]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Don Branson,United States,"[1959, 1960]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,3.0,False,,1960,0.0,1.0,0.0,0.0,0.0,1.5,2,False
|
||||
Tom Bridger,United Kingdom,[1958],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Tony Brise,United Kingdom,[1975],0.0,10.0,10.0,0.0,0.0,0.0,0.0,1.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.1,1,False
|
||||
Chris Bristow,United Kingdom,"[1959, 1960]",0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Peter Broeker,Canada,[1963],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Tony Brooks,United Kingdom,"[1956, 1957, 1958, 1959, 1960, 1961]",0.0,39.0,38.0,3.0,6.0,10.0,3.0,75.0,False,,1960,0.07692307692307693,0.9743589743589743,0.15384615384615385,0.2564102564102564,0.07692307692307693,1.9230769230769231,6,False
|
||||
Alan Brown,United Kingdom,"[1952, 1953, 1954]",0.0,9.0,8.0,0.0,0.0,0.0,0.0,2.0,False,,1950,0.0,0.8888888888888888,0.0,0.0,0.0,0.2222222222222222,3,False
|
||||
Walt Brown,United States,"[1950, 1951]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Warwick Brown,Australia,[1976],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Adolf Brudes,West Germany,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Martin Brundle,United Kingdom,"[1984, 1985, 1986, 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996]",0.0,165.0,158.0,0.0,0.0,9.0,0.0,98.0,False,,1990,0.0,0.9575757575757575,0.0,0.05454545454545454,0.0,0.593939393939394,12,False
|
||||
Gianmaria Bruni,Italy,[2004],0.0,18.0,18.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jimmy Bryan,United States,"[1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,10.0,9.0,0.0,1.0,3.0,0.0,18.0,False,,1960,0.0,0.9,0.1,0.3,0.0,1.8,9,False
|
||||
Clemar Bucci,Argentina,"[1954, 1955]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Ronnie Bucknum,United States,"[1964, 1965, 1966]",0.0,11.0,11.0,0.0,0.0,0.0,0.0,2.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.18181818181818182,3,False
|
||||
Ivor Bueb,United Kingdom,"[1957, 1958, 1959]",0.0,6.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8333333333333334,0.0,0.0,0.0,0.0,3,False
|
||||
Sébastien Buemi,Switzerland,"[2009, 2010, 2011]",0.0,55.0,55.0,0.0,0.0,0.0,0.0,29.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.5272727272727272,3,False
|
||||
Luiz Bueno,Brazil,[1973],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ian Burgess,United Kingdom,"[1958, 1959, 1960, 1961, 1962, 1963]",0.0,20.0,16.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8,0.0,0.0,0.0,0.0,6,False
|
||||
Luciano Burti,Brazil,"[2000, 2001]",0.0,15.0,14.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.9333333333333333,0.0,0.0,0.0,0.0,2,False
|
||||
Roberto Bussinello,Italy,"[1961, 1965]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Jenson Button,United Kingdom,"[2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017]",1.0,309.0,306.0,8.0,15.0,50.0,8.0,1235.0,False,[2009],2010,0.025889967637540454,0.9902912621359223,0.04854368932038835,0.16181229773462782,0.025889967637540454,3.9967637540453076,18,True
|
||||
Tommy Byrne,Ireland,[1982],0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.4,0.0,0.0,0.0,0.0,1,False
|
||||
Giulio Cabianca,Italy,"[1958, 1959, 1960]",0.0,4.0,3.0,0.0,0.0,0.0,0.0,3.0,False,,1960,0.0,0.75,0.0,0.0,0.0,0.75,3,False
|
||||
Phil Cade,United States,[1959],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Alex Caffi,Italy,"[1986, 1987, 1988, 1989, 1990, 1991]",0.0,75.0,56.0,0.0,0.0,0.0,0.0,6.0,False,,1990,0.0,0.7466666666666667,0.0,0.0,0.0,0.08,6,False
|
||||
John Campbell-Jones,United Kingdom,"[1962, 1963]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Adrián Campos,Spain,"[1987, 1988]",0.0,21.0,17.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.8095238095238095,0.0,0.0,0.0,0.0,2,False
|
||||
John Cannon,Canada,[1971],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Eitel Cantoni,Uruguay,[1952],0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bill Cantrell,United States,[1950],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Ivan Capelli,Italy,"[1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993]",0.0,98.0,93.0,0.0,0.0,3.0,0.0,31.0,False,,1990,0.0,0.9489795918367347,0.0,0.030612244897959183,0.0,0.3163265306122449,9,False
|
||||
Piero Carini,Italy,"[1952, 1953]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Duane Carter,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960]",0.0,8.0,8.0,0.0,0.0,1.0,0.0,6.5,False,,1950,0.0,1.0,0.0,0.125,0.0,0.8125,8,False
|
||||
Eugenio Castellotti,Italy,"[1955, 1956, 1957]",0.0,14.0,14.0,1.0,0.0,3.0,0.0,19.5,False,,1960,0.07142857142857142,1.0,0.0,0.21428571428571427,0.0,1.3928571428571428,3,False
|
||||
Johnny Cecotto,Venezuela,"[1983, 1984]",0.0,23.0,18.0,0.0,0.0,0.0,0.0,1.0,False,,1980,0.0,0.782608695652174,0.0,0.0,0.0,0.043478260869565216,2,False
|
||||
Andrea de Cesaris,Italy,"[1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994]",0.0,214.0,208.0,1.0,0.0,5.0,1.0,59.0,False,,1990,0.004672897196261682,0.9719626168224299,0.0,0.02336448598130841,0.004672897196261682,0.2757009345794392,15,False
|
||||
François Cevert,France,"[1970, 1971, 1972, 1973]",0.0,47.0,46.0,0.0,1.0,13.0,2.0,89.0,False,,1970,0.0,0.9787234042553191,0.02127659574468085,0.2765957446808511,0.0425531914893617,1.8936170212765957,4,False
|
||||
Eugène Chaboud,France,"[1950, 1951]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,1.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.3333333333333333,2,False
|
||||
Jay Chamberlain,United States,[1962],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Karun Chandhok,India,"[2010, 2011]",0.0,11.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Alain de Changy,Belgium,[1959],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Colin Chapman,United Kingdom,[1956],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Dave Charlton,South Africa,"[1965, 1967, 1968, 1970, 1971, 1972, 1973, 1974, 1975]",0.0,14.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.7857142857142857,0.0,0.0,0.0,0.0,9,False
|
||||
Pedro Chaves,Portugal,[1991],0.0,13.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bill Cheesbourg,United States,"[1957, 1958, 1959]",0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.75,0.0,0.0,0.0,0.0,3,False
|
||||
Eddie Cheever,United States,"[1978, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989]",0.0,143.0,132.0,0.0,0.0,9.0,0.0,70.0,False,,1980,0.0,0.9230769230769231,0.0,0.06293706293706294,0.0,0.48951048951048953,11,False
|
||||
Andrea Chiesa,Switzerland,[1992],0.0,10.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.3,0.0,0.0,0.0,0.0,1,False
|
||||
Max Chilton,United Kingdom,"[2013, 2014]",0.0,35.0,35.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Ettore Chimeri,Venezuela,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Louis Chiron,Monaco,"[1950, 1951, 1953, 1955, 1956, 1958]",0.0,19.0,15.0,0.0,0.0,1.0,0.0,4.0,False,,1950,0.0,0.7894736842105263,0.0,0.05263157894736842,0.0,0.21052631578947367,6,False
|
||||
Joie Chitwood,United States,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,1.0,False,,1950,0.0,1.0,0.0,0.0,0.0,1.0,1,False
|
||||
Bob Christie,United States,"[1956, 1957, 1958, 1959, 1960]",0.0,7.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.7142857142857143,0.0,0.0,0.0,0.0,5,False
|
||||
Johnny Claes,Belgium,"[1950, 1951, 1952, 1953, 1955]",0.0,25.0,23.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.92,0.0,0.0,0.0,0.0,5,False
|
||||
David Clapham,South Africa,[1965],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jim Clark,United Kingdom,"[1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968]",2.0,73.0,72.0,33.0,25.0,32.0,28.0,255.0,False,"[1963, 1965]",1960,0.4520547945205479,0.9863013698630136,0.3424657534246575,0.4383561643835616,0.3835616438356164,3.493150684931507,9,True
|
||||
Kevin Cogan,United States,"[1980, 1981]",0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
Peter Collins,United Kingdom,"[1952, 1953, 1954, 1955, 1956, 1957, 1958]",0.0,35.0,32.0,0.0,3.0,9.0,0.0,47.0,False,,1960,0.0,0.9142857142857143,0.08571428571428572,0.2571428571428571,0.0,1.3428571428571427,7,False
|
||||
Bernard Collomb,France,"[1961, 1962, 1963, 1964]",0.0,6.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,4,False
|
||||
Alberto Colombo,Italy,[1978],0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Érik Comas,France,"[1991, 1992, 1993, 1994]",0.0,63.0,59.0,0.0,0.0,0.0,0.0,7.0,False,,1990,0.0,0.9365079365079365,0.0,0.0,0.0,0.1111111111111111,4,False
|
||||
Franco Comotti,Italy,"[1950, 1952]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
George Connor,United States,"[1950, 1951, 1952]",0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.75,0.0,0.0,0.0,0.0,3,False
|
||||
George Constantine,United States,[1959],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
John Cordts,Canada,[1969],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
David Coulthard,United Kingdom,"[1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008]",0.0,247.0,246.0,12.0,13.0,62.0,18.0,535.0,False,,2000,0.048582995951417005,0.9959514170040485,0.05263157894736842,0.25101214574898784,0.0728744939271255,2.165991902834008,15,False
|
||||
Piers Courage,United Kingdom,"[1967, 1968, 1969, 1970]",0.0,29.0,27.0,0.0,0.0,2.0,0.0,20.0,False,,1970,0.0,0.9310344827586207,0.0,0.06896551724137931,0.0,0.6896551724137931,4,False
|
||||
Chris Craft,United Kingdom,[1971],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Jim Crawford,United Kingdom,[1975],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ray Crawford,United States,"[1955, 1956, 1959]",0.0,5.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6,0.0,0.0,0.0,0.0,3,False
|
||||
Alberto Crespo,Argentina,[1952],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Antonio Creus,Spain,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Larry Crockett,United States,[1954],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Tony Crook,United Kingdom,"[1952, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Art Cross,United States,"[1952, 1953, 1954, 1955]",0.0,4.0,4.0,0.0,0.0,1.0,0.0,8.0,False,,1950,0.0,1.0,0.0,0.25,0.0,2.0,4,False
|
||||
Geoffrey Crossley,United Kingdom,[1950],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jérôme d'Ambrosio,Belgium,"[2011, 2012]",0.0,20.0,20.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Chuck Daigh,United States,[1960],0.0,6.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Yannick Dalmas,France,"[1987, 1988, 1989, 1990, 1994]",0.0,49.0,24.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.4897959183673469,0.0,0.0,0.0,0.0,5,False
|
||||
Derek Daly,Ireland,"[1978, 1979, 1980, 1981, 1982]",0.0,64.0,49.0,0.0,0.0,0.0,0.0,15.0,False,,1980,0.0,0.765625,0.0,0.0,0.0,0.234375,5,False
|
||||
Christian Danner,West Germany,"[1985, 1986, 1987, 1989]",0.0,47.0,36.0,0.0,0.0,0.0,0.0,4.0,False,,1990,0.0,0.7659574468085106,0.0,0.0,0.0,0.0851063829787234,4,False
|
||||
Jorge Daponte,Argentina,[1954],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Anthony Davidson,United Kingdom,"[2002, 2005, 2007, 2008]",0.0,24.0,24.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,4,False
|
||||
Jimmy Davies,United States,"[1950, 1951, 1953, 1954, 1955]",0.0,8.0,5.0,0.0,0.0,1.0,0.0,4.0,False,,1950,0.0,0.625,0.0,0.125,0.0,0.5,5,False
|
||||
Colin Davis,United Kingdom,[1959],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jimmy Daywalt,United States,"[1953, 1954, 1955, 1956, 1957, 1959]",0.0,10.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6,0.0,0.0,0.0,0.0,6,False
|
||||
Jean-Denis Délétraz,Switzerland,"[1994, 1995]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Patrick Depailler,France,"[1972, 1974, 1975, 1976, 1977, 1978, 1979, 1980]",0.0,95.0,95.0,1.0,2.0,19.0,4.0,139.0,False,,1980,0.010526315789473684,1.0,0.021052631578947368,0.2,0.042105263157894736,1.4631578947368422,8,False
|
||||
Pedro Diniz,Brazil,"[1995, 1996, 1997, 1998, 1999, 2000]",0.0,99.0,98.0,0.0,0.0,0.0,0.0,10.0,False,,2000,0.0,0.98989898989899,0.0,0.0,0.0,0.10101010101010101,6,False
|
||||
Duke Dinsmore,United States,"[1950, 1951, 1953, 1956]",0.0,6.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,4,False
|
||||
Frank Dochnal,United States,[1963],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
José Dolhem,France,[1974],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Martin Donnelly,United Kingdom,"[1989, 1990]",0.0,15.0,13.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.8666666666666667,0.0,0.0,0.0,0.0,2,False
|
||||
Mark Donohue,United States,"[1971, 1974, 1975]",0.0,16.0,14.0,0.0,0.0,1.0,0.0,8.0,False,,1970,0.0,0.875,0.0,0.0625,0.0,0.5,3,False
|
||||
Robert Doornbos,Monaco Netherlands,"[2005, 2006]",0.0,11.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Ken Downing,United Kingdom,[1952],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bob Drake,United States,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Paddy Driver,South Africa,"[1963, 1974]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Piero Drogo,Italy,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bernard de Dryver,Belgium,"[1977, 1978]",0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
Johnny Dumfries,United Kingdom,[1986],0.0,16.0,15.0,0.0,0.0,0.0,0.0,3.0,False,,1990,0.0,0.9375,0.0,0.0,0.0,0.1875,1,False
|
||||
Geoff Duke,United Kingdom,[1961],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Len Duncan,United States,[1954],0.0,4.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.25,0.0,0.0,0.0,0.0,1,False
|
||||
Piero Dusio,Italy,[1952],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
George Eaton,Canada,"[1969, 1970, 1971]",0.0,13.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.8461538461538461,0.0,0.0,0.0,0.0,3,False
|
||||
Bernie Ecclestone,United Kingdom,[1958],0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Don Edmunds,United States,[1957],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Guy Edwards,United Kingdom,"[1974, 1976, 1977]",0.0,17.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.6470588235294118,0.0,0.0,0.0,0.0,3,False
|
||||
Vic Elford,United Kingdom,"[1968, 1969, 1971]",0.0,13.0,13.0,0.0,0.0,0.0,0.0,8.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.6153846153846154,3,False
|
||||
Ed Elisian,United States,"[1954, 1955, 1956, 1957, 1958]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,5,False
|
||||
Paul Emery,United Kingdom,"[1956, 1958]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Tomáš Enge,Czech Republic,[2001],0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Paul England,Australia,[1957],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Marcus Ericsson,Sweden,"[2014, 2015, 2016, 2017, 2018]",0.0,97.0,97.0,0.0,0.0,0.0,0.0,18.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.18556701030927836,5,False
|
||||
Harald Ertl,Austria,"[1975, 1976, 1977, 1978, 1980]",0.0,28.0,19.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.6785714285714286,0.0,0.0,0.0,0.0,5,False
|
||||
Nasif Estéfano,Argentina,"[1960, 1962]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Philippe Étancelin,France,"[1950, 1951, 1952]",0.0,12.0,12.0,0.0,0.0,0.0,0.0,3.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.25,3,False
|
||||
Bob Evans,United Kingdom,"[1975, 1976]",0.0,12.0,10.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.8333333333333334,0.0,0.0,0.0,0.0,2,False
|
||||
Corrado Fabi,Italy,"[1983, 1984]",0.0,18.0,12.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Teo Fabi,Italy,"[1982, 1984, 1985, 1986, 1987]",0.0,71.0,64.0,3.0,0.0,2.0,2.0,23.0,False,,1980,0.04225352112676056,0.9014084507042254,0.0,0.028169014084507043,0.028169014084507043,0.323943661971831,5,False
|
||||
Pascal Fabre,France,[1987],0.0,14.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.7857142857142857,0.0,0.0,0.0,0.0,1,False
|
||||
Carlo Facetti,Italy,[1974],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Luigi Fagioli,Italy,"[1950, 1951]",0.0,7.0,7.0,0.0,1.0,6.0,0.0,28.0,False,,1950,0.0,1.0,0.14285714285714285,0.8571428571428571,0.0,4.0,2,False
|
||||
Jack Fairman,United Kingdom,"[1953, 1955, 1956, 1957, 1958, 1959, 1960, 1961]",0.0,13.0,12.0,0.0,0.0,0.0,0.0,5.0,False,,1960,0.0,0.9230769230769231,0.0,0.0,0.0,0.38461538461538464,8,False
|
||||
Juan Manuel Fangio,Argentina,"[1950, 1951, 1953, 1954, 1955, 1956, 1957, 1958]",5.0,52.0,51.0,29.0,24.0,35.0,23.0,245.0,False,"[1951, 1954, 1955, 1956, 1957]",1950,0.5576923076923077,0.9807692307692307,0.46153846153846156,0.6730769230769231,0.4423076923076923,4.711538461538462,8,True
|
||||
Nino Farina,Italy,"[1950, 1951, 1952, 1953, 1954, 1955]",1.0,34.0,33.0,5.0,5.0,20.0,5.0,115.33,False,[1950],1950,0.14705882352941177,0.9705882352941176,0.14705882352941177,0.5882352941176471,0.14705882352941177,3.392058823529412,6,True
|
||||
Walt Faulkner,United States,"[1950, 1951, 1953, 1954, 1955]",0.0,6.0,5.0,1.0,0.0,0.0,0.0,1.0,False,,1950,0.16666666666666666,0.8333333333333334,0.0,0.0,0.0,0.16666666666666666,5,False
|
||||
William Ferguson,South Africa,[1972],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Maria Teresa de Filippis,Italy,"[1958, 1959]",0.0,5.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6,0.0,0.0,0.0,0.0,2,False
|
||||
Ralph Firman,Ireland,[2003],0.0,15.0,14.0,0.0,0.0,0.0,0.0,1.0,False,,2000,0.0,0.9333333333333333,0.0,0.0,0.0,0.06666666666666667,1,False
|
||||
Ludwig Fischer,West Germany,[1952],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Rudi Fischer,Switzerland,"[1951, 1952]",0.0,8.0,7.0,0.0,0.0,2.0,0.0,10.0,False,,1950,0.0,0.875,0.0,0.25,0.0,1.25,2,False
|
||||
Mike Fisher,United States,[1967],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Giancarlo Fisichella,Italy,"[1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009]",0.0,231.0,229.0,4.0,3.0,19.0,2.0,275.0,False,,2000,0.017316017316017316,0.9913419913419913,0.012987012987012988,0.08225108225108226,0.008658008658008658,1.1904761904761905,14,False
|
||||
John Fitch,United States,"[1953, 1955]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Christian Fittipaldi,Brazil,"[1992, 1993, 1994]",0.0,43.0,40.0,0.0,0.0,0.0,0.0,12.0,False,,1990,0.0,0.9302325581395349,0.0,0.0,0.0,0.27906976744186046,3,False
|
||||
Emerson Fittipaldi,Brazil,"[1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980]",2.0,149.0,144.0,6.0,14.0,35.0,6.0,281.0,False,"[1972, 1974]",1980,0.040268456375838924,0.9664429530201343,0.09395973154362416,0.2348993288590604,0.040268456375838924,1.8859060402684564,11,True
|
||||
Pietro Fittipaldi,Brazil,[2020],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Wilson Fittipaldi,Brazil,"[1972, 1973, 1975]",0.0,38.0,35.0,0.0,0.0,0.0,0.0,3.0,False,,1970,0.0,0.9210526315789473,0.0,0.0,0.0,0.07894736842105263,3,False
|
||||
Theo Fitzau,East Germany,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Pat Flaherty,United States,"[1950, 1953, 1954, 1955, 1956, 1959]",0.0,6.0,6.0,1.0,1.0,1.0,0.0,8.0,False,,1950,0.16666666666666666,1.0,0.16666666666666666,0.16666666666666666,0.0,1.3333333333333333,6,False
|
||||
Jan Flinterman,Netherlands,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ron Flockhart,United Kingdom,"[1954, 1956, 1957, 1958, 1959, 1960]",0.0,14.0,14.0,0.0,0.0,1.0,0.0,5.0,False,,1960,0.0,1.0,0.0,0.07142857142857142,0.0,0.35714285714285715,6,False
|
||||
Myron Fohr,United States,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Gregor Foitek,Switzerland,"[1989, 1990]",0.0,22.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.3181818181818182,0.0,0.0,0.0,0.0,2,False
|
||||
George Follmer,United States,[1973],0.0,13.0,12.0,0.0,0.0,1.0,0.0,5.0,False,,1970,0.0,0.9230769230769231,0.0,0.07692307692307693,0.0,0.38461538461538464,1,False
|
||||
George Fonder,United States,"[1952, 1954]",0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.4,0.0,0.0,0.0,0.0,2,False
|
||||
Norberto Fontana,Argentina,[1997],0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Asdrúbal Fontes Bayardo,Uruguay,[1959],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Carl Forberg,United States,[1951],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Gene Force,United States,"[1951, 1960]",0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.4,0.0,0.0,0.0,0.0,2,False
|
||||
Franco Forini,Switzerland,[1987],0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,1,False
|
||||
Philip Fotheringham-Parker,United Kingdom,[1951],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
A. J. Foyt,United States,"[1958, 1959, 1960]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Giorgio Francia,Italy,"[1977, 1981]",0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
Don Freeland,United States,"[1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,8.0,8.0,0.0,0.0,1.0,0.0,4.0,False,,1960,0.0,1.0,0.0,0.125,0.0,0.5,8,False
|
||||
Heinz-Harald Frentzen,Germany,"[1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003]",0.0,160.0,156.0,2.0,3.0,18.0,6.0,174.0,False,,2000,0.0125,0.975,0.01875,0.1125,0.0375,1.0875,10,False
|
||||
Paul Frère,Belgium,"[1952, 1953, 1954, 1955, 1956]",0.0,11.0,11.0,0.0,0.0,1.0,0.0,11.0,False,,1950,0.0,1.0,0.0,0.09090909090909091,0.0,1.0,5,False
|
||||
Patrick Friesacher,Austria,[2005],0.0,11.0,11.0,0.0,0.0,0.0,0.0,3.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.2727272727272727,1,False
|
||||
Joe Fry,United Kingdom,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Hiroshi Fushida,Japan,[1975],0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Beppe Gabbiani,Italy,"[1978, 1981]",0.0,17.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.17647058823529413,0.0,0.0,0.0,0.0,2,False
|
||||
Bertrand Gachot,Belgium France,"[1989, 1990, 1991, 1992, 1994, 1995]",0.0,84.0,47.0,0.0,0.0,0.0,1.0,5.0,False,,1990,0.0,0.5595238095238095,0.0,0.0,0.011904761904761904,0.05952380952380952,6,False
|
||||
Patrick Gaillard,France,[1979],0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.4,0.0,0.0,0.0,0.0,1,False
|
||||
Divina Galica,United Kingdom,"[1976, 1978]",0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
Nanni Galli,Italy,"[1970, 1971, 1972, 1973]",0.0,20.0,17.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.85,0.0,0.0,0.0,0.0,4,False
|
||||
Oscar Alfredo Gálvez,Argentina,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,2.0,False,,1950,0.0,1.0,0.0,0.0,0.0,2.0,1,False
|
||||
Fred Gamble,United States,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Howden Ganley,New Zealand,"[1971, 1972, 1973, 1974]",0.0,41.0,35.0,0.0,0.0,0.0,0.0,10.0,False,,1970,0.0,0.8536585365853658,0.0,0.0,0.0,0.24390243902439024,4,False
|
||||
Giedo van der Garde,Netherlands,[2013],0.0,19.0,19.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Frank Gardner,Australia,"[1964, 1965, 1968]",0.0,9.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.8888888888888888,0.0,0.0,0.0,0.0,3,False
|
||||
Billy Garrett,United States,"[1956, 1958]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Jo Gartner,Austria,[1984],0.0,8.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Pierre Gasly,France,"[2017, 2018, 2019, 2020, 2021, 2022]",0.0,109.0,109.0,0.0,1.0,3.0,3.0,334.0,True,,2020,0.0,1.0,0.009174311926605505,0.027522935779816515,0.027522935779816515,3.0642201834862384,6,False
|
||||
Tony Gaze,Australia,[1952],0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.75,0.0,0.0,0.0,0.0,1,False
|
||||
Geki,Italy,"[1964, 1965, 1966]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,3,False
|
||||
Olivier Gendebien,Belgium,"[1956, 1958, 1959, 1960, 1961]",0.0,15.0,14.0,0.0,0.0,2.0,0.0,18.0,False,,1960,0.0,0.9333333333333333,0.0,0.13333333333333333,0.0,1.2,5,False
|
||||
Marc Gené,Spain,"[1999, 2000, 2003, 2004]",0.0,36.0,36.0,0.0,0.0,0.0,0.0,5.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.1388888888888889,4,False
|
||||
Elmer George,United States,[1957],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Bob Gerard,United Kingdom,"[1950, 1951, 1953, 1954, 1956, 1957]",0.0,8.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,6,False
|
||||
Gerino Gerini,Italy,"[1956, 1958]",0.0,7.0,6.0,0.0,0.0,0.0,0.0,1.5,False,,1960,0.0,0.8571428571428571,0.0,0.0,0.0,0.21428571428571427,2,False
|
||||
Peter Gethin,United Kingdom,"[1970, 1971, 1972, 1973, 1974]",0.0,31.0,30.0,0.0,1.0,1.0,0.0,11.0,False,,1970,0.0,0.967741935483871,0.03225806451612903,0.03225806451612903,0.0,0.3548387096774194,5,False
|
||||
Piercarlo Ghinzani,Italy,"[1981, 1983, 1984, 1985, 1986, 1987, 1988, 1989]",0.0,111.0,74.0,0.0,0.0,0.0,0.0,2.0,False,,1990,0.0,0.6666666666666666,0.0,0.0,0.0,0.018018018018018018,8,False
|
||||
Bruno Giacomelli,Italy,"[1977, 1978, 1979, 1980, 1981, 1982, 1983, 1990]",0.0,82.0,69.0,1.0,0.0,1.0,0.0,14.0,False,,1980,0.012195121951219513,0.8414634146341463,0.0,0.012195121951219513,0.0,0.17073170731707318,8,False
|
||||
Dick Gibson,United Kingdom,"[1957, 1958]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Gimax,Italy,[1978],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Richie Ginther,United States,"[1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967]",0.0,54.0,52.0,0.0,1.0,14.0,3.0,102.0,False,,1960,0.0,0.9629629629629629,0.018518518518518517,0.25925925925925924,0.05555555555555555,1.8888888888888888,8,False
|
||||
Antonio Giovinazzi,Italy,"[2017, 2019, 2020, 2021]",0.0,62.0,62.0,0.0,0.0,0.0,0.0,21.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.3387096774193548,4,False
|
||||
Yves Giraud-Cabantous,France,"[1950, 1951, 1952, 1953]",0.0,13.0,13.0,0.0,0.0,0.0,0.0,5.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.38461538461538464,4,False
|
||||
Ignazio Giunti,Italy,[1970],0.0,4.0,4.0,0.0,0.0,0.0,0.0,3.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.75,1,False
|
||||
Timo Glock,Germany,"[2004, 2008, 2009, 2010, 2011, 2012]",0.0,95.0,91.0,0.0,0.0,3.0,1.0,51.0,False,,2010,0.0,0.9578947368421052,0.0,0.031578947368421054,0.010526315789473684,0.5368421052631579,6,False
|
||||
Helm Glöckler,West Germany,[1953],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Paco Godia,Spain,"[1951, 1954, 1956, 1957, 1958]",0.0,14.0,13.0,0.0,0.0,0.0,0.0,6.0,False,,1960,0.0,0.9285714285714286,0.0,0.0,0.0,0.42857142857142855,5,False
|
||||
Carel Godin de Beaufort,Netherlands,"[1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964]",0.0,31.0,28.0,0.0,0.0,0.0,0.0,4.0,False,,1960,0.0,0.9032258064516129,0.0,0.0,0.0,0.12903225806451613,8,False
|
||||
Christian Goethals,Belgium,[1958],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Paul Goldsmith,United States,"[1958, 1959, 1960]",0.0,3.0,3.0,0.0,0.0,1.0,0.0,6.0,False,,1960,0.0,1.0,0.0,0.3333333333333333,0.0,2.0,3,False
|
||||
José Froilán González,Argentina,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1960]",0.0,26.0,26.0,3.0,2.0,15.0,6.0,72.14,False,,1950,0.11538461538461539,1.0,0.07692307692307693,0.5769230769230769,0.23076923076923078,2.7746153846153847,9,False
|
||||
Óscar González,Uruguay,[1956],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Aldo Gordini,France,[1951],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Horace Gould,United Kingdom,"[1954, 1955, 1956, 1957, 1958, 1960]",0.0,18.0,14.0,0.0,0.0,0.0,0.0,2.0,False,,1960,0.0,0.7777777777777778,0.0,0.0,0.0,0.1111111111111111,6,False
|
||||
Jean-Marc Gounon,France,"[1993, 1994]",0.0,9.0,9.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Emmanuel de Graffenried,Switzerland,"[1950, 1951, 1952, 1953, 1954, 1956]",0.0,23.0,22.0,0.0,0.0,0.0,0.0,9.0,False,,1950,0.0,0.9565217391304348,0.0,0.0,0.0,0.391304347826087,6,False
|
||||
Lucas di Grassi,Brazil,[2010],0.0,19.0,18.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,0.9473684210526315,0.0,0.0,0.0,0.0,1,False
|
||||
Cecil Green,United States,"[1950, 1951]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,3.0,False,,1950,0.0,1.0,0.0,0.0,0.0,1.5,2,False
|
||||
Keith Greene,United Kingdom,"[1959, 1960, 1961, 1962]",0.0,6.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,4,False
|
||||
Masten Gregory,United States,"[1957, 1958, 1959, 1960, 1961, 1962, 1963, 1965]",0.0,43.0,38.0,0.0,0.0,3.0,0.0,21.0,False,,1960,0.0,0.8837209302325582,0.0,0.06976744186046512,0.0,0.4883720930232558,8,False
|
||||
Cliff Griffith,United States,"[1951, 1952, 1956]",0.0,7.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.42857142857142855,0.0,0.0,0.0,0.0,3,False
|
||||
Georges Grignard,France,[1951],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bobby Grim,United States,"[1959, 1960]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Romain Grosjean,France,"[2009, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]",0.0,181.0,179.0,0.0,0.0,10.0,1.0,391.0,False,,2020,0.0,0.988950276243094,0.0,0.055248618784530384,0.0055248618784530384,2.160220994475138,10,False
|
||||
Olivier Grouillard,France,"[1989, 1990, 1991, 1992]",0.0,62.0,41.0,0.0,0.0,0.0,0.0,1.0,False,,1990,0.0,0.6612903225806451,0.0,0.0,0.0,0.016129032258064516,4,False
|
||||
Brian Gubby,United Kingdom,[1965],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
André Guelfi,France,[1958],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Miguel Ángel Guerra,Argentina,[1981],0.0,4.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.25,0.0,0.0,0.0,0.0,1,False
|
||||
Roberto Guerrero,Colombia,"[1982, 1983]",0.0,29.0,21.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.7241379310344828,0.0,0.0,0.0,0.0,2,False
|
||||
Maurício Gugelmin,Brazil,"[1988, 1989, 1990, 1991, 1992]",0.0,80.0,74.0,0.0,0.0,1.0,1.0,10.0,False,,1990,0.0,0.925,0.0,0.0125,0.0125,0.125,5,False
|
||||
Dan Gurney,United States,"[1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1970]",0.0,87.0,86.0,3.0,4.0,19.0,6.0,133.0,False,,1960,0.034482758620689655,0.9885057471264368,0.04597701149425287,0.21839080459770116,0.06896551724137931,1.528735632183908,11,False
|
||||
Esteban Gutiérrez,Mexico,"[2013, 2014, 2016]",0.0,59.0,59.0,0.0,0.0,0.0,1.0,6.0,False,,2010,0.0,1.0,0.0,0.0,0.01694915254237288,0.1016949152542373,3,False
|
||||
Hubert Hahne,West Germany,"[1967, 1968, 1970]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,3,False
|
||||
Mike Hailwood,United Kingdom,"[1963, 1964, 1965, 1971, 1972, 1973, 1974]",0.0,50.0,50.0,0.0,0.0,2.0,1.0,29.0,False,,1970,0.0,1.0,0.0,0.04,0.02,0.58,7,False
|
||||
Mika Häkkinen,Finland,"[1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001]",2.0,165.0,161.0,26.0,20.0,51.0,25.0,420.0,False,"[1998, 1999]",2000,0.15757575757575756,0.9757575757575757,0.12121212121212122,0.3090909090909091,0.15151515151515152,2.5454545454545454,11,True
|
||||
Bruce Halford,United Kingdom,"[1956, 1957, 1959, 1960]",0.0,9.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8888888888888888,0.0,0.0,0.0,0.0,4,False
|
||||
Jim Hall,United States,"[1960, 1961, 1962, 1963]",0.0,12.0,11.0,0.0,0.0,0.0,0.0,3.0,False,,1960,0.0,0.9166666666666666,0.0,0.0,0.0,0.25,4,False
|
||||
Duncan Hamilton,United Kingdom,"[1951, 1952, 1953]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Lewis Hamilton,United Kingdom,"[2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]",7.0,311.0,311.0,103.0,103.0,191.0,61.0,4415.5,True,"[2008, 2014, 2015, 2017, 2018, 2019, 2020]",2010,0.3311897106109325,1.0,0.3311897106109325,0.6141479099678456,0.19614147909967847,14.19774919614148,16,True
|
||||
David Hampshire,United Kingdom,[1950],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Sam Hanks,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957]",0.0,8.0,8.0,0.0,1.0,4.0,0.0,20.0,False,,1950,0.0,1.0,0.125,0.5,0.0,2.5,8,False
|
||||
Walt Hansgen,United States,"[1961, 1964]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,2.0,False,,1960,0.0,1.0,0.0,0.0,0.0,1.0,2,False
|
||||
Mike Harris,South Africa,[1962],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Cuth Harrison,United Kingdom,[1950],0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Brian Hart,United Kingdom,[1967],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Brendon Hartley,New Zealand,"[2017, 2018]",0.0,25.0,25.0,0.0,0.0,0.0,0.0,4.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.16,2,False
|
||||
Gene Hartley,United States,"[1950, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,10.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8,0.0,0.0,0.0,0.0,10,False
|
||||
Rio Haryanto,Indonesia,[2016],0.0,12.0,12.0,0.0,0.0,0.0,0.0,0.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Masahiro Hasemi,Japan,[1976],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Naoki Hattori,Japan,[1991],0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Paul Hawkins,Australia,[1965],0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Mike Hawthorn,United Kingdom,"[1952, 1953, 1954, 1955, 1956, 1957, 1958]",1.0,47.0,45.0,4.0,3.0,18.0,6.0,112.64,False,[1958],1960,0.0851063829787234,0.9574468085106383,0.06382978723404255,0.3829787234042553,0.1276595744680851,2.3965957446808512,7,True
|
||||
Boy Hayje,Netherlands,"[1976, 1977]",0.0,7.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.42857142857142855,0.0,0.0,0.0,0.0,2,False
|
||||
Willi Heeks,West Germany,"[1952, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Nick Heidfeld,Germany,"[2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011]",0.0,185.0,183.0,1.0,0.0,13.0,2.0,259.0,False,,2010,0.005405405405405406,0.9891891891891892,0.0,0.07027027027027027,0.010810810810810811,1.4,12,False
|
||||
Theo Helfrich,West Germany,"[1952, 1953, 1954]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Mack Hellings,United States,"[1950, 1951]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Brian Henton,United Kingdom,"[1975, 1977, 1981, 1982]",0.0,37.0,19.0,0.0,0.0,0.0,1.0,0.0,False,,1980,0.0,0.5135135135135135,0.0,0.0,0.02702702702702703,0.0,4,False
|
||||
Johnny Herbert,United Kingdom,"[1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000]",0.0,165.0,160.0,0.0,3.0,7.0,0.0,98.0,False,,1990,0.0,0.9696969696969697,0.01818181818181818,0.04242424242424243,0.0,0.593939393939394,12,False
|
||||
Al Herman,United States,"[1955, 1956, 1957, 1959, 1960]",0.0,8.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.625,0.0,0.0,0.0,0.0,5,False
|
||||
Hans Herrmann,West Germany,"[1953, 1954, 1955, 1957, 1958, 1959, 1960, 1961]",0.0,19.0,17.0,0.0,0.0,1.0,1.0,10.0,False,,1960,0.0,0.8947368421052632,0.0,0.05263157894736842,0.05263157894736842,0.5263157894736842,8,False
|
||||
François Hesnault,France,"[1984, 1985]",0.0,21.0,19.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.9047619047619048,0.0,0.0,0.0,0.0,2,False
|
||||
Hans Heyer,West Germany,[1977],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Damon Hill,United Kingdom,"[1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999]",1.0,122.0,115.0,20.0,22.0,42.0,19.0,360.0,False,[1996],2000,0.16393442622950818,0.9426229508196722,0.18032786885245902,0.3442622950819672,0.1557377049180328,2.9508196721311477,8,True
|
||||
Graham Hill,United Kingdom,"[1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975]",2.0,179.0,176.0,13.0,14.0,36.0,10.0,270.0,False,"[1962, 1968]",1970,0.07262569832402235,0.9832402234636871,0.0782122905027933,0.2011173184357542,0.055865921787709494,1.5083798882681565,18,True
|
||||
Phil Hill,United States,"[1958, 1959, 1960, 1961, 1962, 1963, 1964, 1966]",1.0,52.0,49.0,6.0,3.0,16.0,6.0,94.0,False,[1961],1960,0.11538461538461539,0.9423076923076923,0.057692307692307696,0.3076923076923077,0.11538461538461539,1.8076923076923077,8,True
|
||||
Peter Hirt,Switzerland,"[1951, 1952, 1953]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
David Hobbs,United Kingdom,"[1967, 1968, 1971, 1974]",0.0,7.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,4,False
|
||||
Gary Hocking,Rhodesia and Nyasaland,[1962],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ingo Hoffmann,Brazil,"[1976, 1977]",0.0,6.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Bill Holland,United States,"[1950, 1953]",0.0,3.0,2.0,0.0,0.0,1.0,0.0,6.0,False,,1950,0.0,0.6666666666666666,0.0,0.3333333333333333,0.0,2.0,2,False
|
||||
Jackie Holmes,United States,"[1950, 1953]",0.0,4.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Bill Homeier,United States,"[1954, 1955, 1960]",0.0,6.0,3.0,0.0,0.0,0.0,0.0,1.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.16666666666666666,3,False
|
||||
Kazuyoshi Hoshino,Japan,"[1976, 1977]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Jerry Hoyt,United States,"[1950, 1953, 1954, 1955]",0.0,4.0,4.0,1.0,0.0,0.0,0.0,0.0,False,,1950,0.25,1.0,0.0,0.0,0.0,0.0,4,False
|
||||
Nico Hülkenberg,Germany,"[2010, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022]",0.0,185.0,182.0,1.0,0.0,0.0,2.0,521.0,True,,2020,0.005405405405405406,0.9837837837837838,0.0,0.0,0.010810810810810811,2.8162162162162163,11,False
|
||||
Denny Hulme,New Zealand,"[1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974]",1.0,112.0,112.0,1.0,8.0,33.0,9.0,248.0,False,[1967],1970,0.008928571428571428,1.0,0.07142857142857142,0.29464285714285715,0.08035714285714286,2.2142857142857144,10,True
|
||||
James Hunt,United Kingdom,"[1973, 1974, 1975, 1976, 1977, 1978, 1979]",1.0,93.0,92.0,14.0,10.0,23.0,8.0,179.0,False,[1976],1980,0.15053763440860216,0.989247311827957,0.10752688172043011,0.24731182795698925,0.08602150537634409,1.924731182795699,7,True
|
||||
Jim Hurtubise,United States,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Gus Hutchison,United States,[1970],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jacky Ickx,Belgium,"[1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979]",0.0,120.0,114.0,13.0,8.0,25.0,14.0,181.0,False,,1970,0.10833333333333334,0.95,0.06666666666666667,0.20833333333333334,0.11666666666666667,1.5083333333333333,13,False
|
||||
Yuji Ide,Japan,[2006],0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jesús Iglesias,Argentina,[1955],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Taki Inoue,Japan,"[1994, 1995]",0.0,18.0,18.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Innes Ireland,United Kingdom,"[1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966]",0.0,53.0,50.0,0.0,1.0,4.0,1.0,47.0,False,,1960,0.0,0.9433962264150944,0.018867924528301886,0.07547169811320754,0.018867924528301886,0.8867924528301887,8,False
|
||||
Eddie Irvine,United Kingdom,"[1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002]",0.0,148.0,145.0,0.0,4.0,26.0,1.0,191.0,False,,2000,0.0,0.9797297297297297,0.02702702702702703,0.17567567567567569,0.006756756756756757,1.2905405405405406,10,False
|
||||
Chris Irwin,United Kingdom,"[1966, 1967]",0.0,10.0,10.0,0.0,0.0,0.0,0.0,2.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.2,2,False
|
||||
Jean-Pierre Jabouille,France,"[1974, 1975, 1977, 1978, 1979, 1980, 1981]",0.0,55.0,49.0,6.0,2.0,2.0,0.0,21.0,False,,1980,0.10909090909090909,0.8909090909090909,0.03636363636363636,0.03636363636363636,0.0,0.38181818181818183,7,False
|
||||
Jimmy Jackson,United States,"[1950, 1954]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Joe James,United States,"[1951, 1952]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
John James,United Kingdom,[1951],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jean-Pierre Jarier,France,"[1971, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983]",0.0,143.0,135.0,3.0,0.0,3.0,3.0,31.5,False,,1980,0.02097902097902098,0.9440559440559441,0.0,0.02097902097902098,0.02097902097902098,0.2202797202797203,12,False
|
||||
Max Jean[w],France,[1971],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Stefan Johansson,Sweden,"[1980, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991]",0.0,103.0,79.0,0.0,0.0,12.0,0.0,88.0,False,,1990,0.0,0.7669902912621359,0.0,0.11650485436893204,0.0,0.8543689320388349,10,False
|
||||
Eddie Johnson,United States,"[1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,9.0,9.0,0.0,0.0,0.0,0.0,1.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.1111111111111111,9,False
|
||||
Leslie Johnson,United Kingdom,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bruce Johnstone,South Africa,[1962],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Alan Jones,Australia,"[1975, 1976, 1977, 1978, 1979, 1980, 1981, 1983, 1985, 1986]",1.0,117.0,116.0,6.0,12.0,24.0,13.0,199.0,False,[1980],1980,0.05128205128205128,0.9914529914529915,0.10256410256410256,0.20512820512820512,0.1111111111111111,1.7008547008547008,10,True
|
||||
Tom Jones,United States,[1967],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Juan Jover,Spain,[1951],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Oswald Karch,West Germany,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Narain Karthikeyan,India,"[2005, 2011, 2012]",0.0,48.0,46.0,0.0,0.0,0.0,0.0,5.0,False,,2010,0.0,0.9583333333333334,0.0,0.0,0.0,0.10416666666666667,3,False
|
||||
Ukyo Katayama,Japan,"[1992, 1993, 1994, 1995, 1996, 1997]",0.0,97.0,95.0,0.0,0.0,0.0,0.0,5.0,False,,1990,0.0,0.979381443298969,0.0,0.0,0.0,0.05154639175257732,6,False
|
||||
Ken Kavanagh,Australia,[1958],0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Rupert Keegan,United Kingdom,"[1977, 1978, 1980, 1982]",0.0,37.0,25.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.6756756756756757,0.0,0.0,0.0,0.0,4,False
|
||||
Eddie Keizan,South Africa,"[1973, 1974, 1975]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Al Keller,United States,"[1955, 1956, 1957, 1958, 1959]",0.0,6.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8333333333333334,0.0,0.0,0.0,0.0,5,False
|
||||
Joe Kelly,Ireland,"[1950, 1951]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
David Kennedy,Ireland,[1980],0.0,7.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Loris Kessel,Switzerland,"[1976, 1977]",0.0,6.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Bruce Kessler,United States,[1958],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Nicolas Kiesa,Denmark,[2003],0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Leo Kinnunen,Finland,[1974],0.0,6.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.16666666666666666,0.0,0.0,0.0,0.0,1,False
|
||||
Danny Kladis,United States,[1954],0.0,5.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.2,0.0,0.0,0.0,0.0,1,False
|
||||
Hans Klenk,West Germany,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Peter de Klerk,South Africa,"[1963, 1965, 1969, 1970]",0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,4,False
|
||||
Christian Klien,Austria,"[2004, 2005, 2006, 2010]",0.0,51.0,49.0,0.0,0.0,0.0,0.0,14.0,False,,2010,0.0,0.9607843137254902,0.0,0.0,0.0,0.27450980392156865,4,False
|
||||
Karl Kling,West Germany,"[1954, 1955]",0.0,11.0,11.0,0.0,0.0,2.0,1.0,17.0,False,,1950,0.0,1.0,0.0,0.18181818181818182,0.09090909090909091,1.5454545454545454,2,False
|
||||
Ernst Klodwig,East Germany,"[1952, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Kamui Kobayashi,Japan,"[2009, 2010, 2011, 2012, 2014]",0.0,76.0,75.0,0.0,0.0,1.0,1.0,125.0,False,,2010,0.0,0.9868421052631579,0.0,0.013157894736842105,0.013157894736842105,1.644736842105263,5,False
|
||||
Helmuth Koinigg,Austria,[1974],0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,1,False
|
||||
Heikki Kovalainen,Finland,"[2007, 2008, 2009, 2010, 2011, 2012, 2013]",0.0,112.0,111.0,1.0,1.0,4.0,2.0,105.0,False,,2010,0.008928571428571428,0.9910714285714286,0.008928571428571428,0.03571428571428571,0.017857142857142856,0.9375,7,False
|
||||
Mikko Kozarowitzky,Finland,[1977],0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Willi Krakau,West Germany,[1952],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Rudolf Krause,East Germany,"[1952, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Robert Kubica,Poland,"[2006, 2007, 2008, 2009, 2010, 2019, 2021]",0.0,99.0,99.0,1.0,1.0,12.0,1.0,274.0,False,,2010,0.010101010101010102,1.0,0.010101010101010102,0.12121212121212122,0.010101010101010102,2.7676767676767677,7,False
|
||||
Kurt Kuhnke,West Germany,[1963],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Masami Kuwashima,Japan,[1976],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Daniil Kvyat,Russia,"[2014, 2015, 2016, 2017, 2019, 2020]",0.0,112.0,110.0,0.0,0.0,3.0,1.0,202.0,False,,2020,0.0,0.9821428571428571,0.0,0.026785714285714284,0.008928571428571428,1.8035714285714286,6,False
|
||||
Robert La Caze,Morocco,[1958],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jacques Laffite,France,"[1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986]",0.0,180.0,176.0,7.0,6.0,32.0,7.0,228.0,False,,1980,0.03888888888888889,0.9777777777777777,0.03333333333333333,0.17777777777777778,0.03888888888888889,1.2666666666666666,13,False
|
||||
Franck Lagorce,France,[1994],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jan Lammers,Netherlands,"[1979, 1980, 1981, 1982, 1992]",0.0,41.0,23.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5609756097560976,0.0,0.0,0.0,0.0,5,False
|
||||
Pedro Lamy,Portugal,"[1993, 1994, 1995, 1996]",0.0,32.0,32.0,0.0,0.0,0.0,0.0,1.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.03125,4,False
|
||||
Chico Landi,Brazil,"[1951, 1952, 1953, 1956]",0.0,6.0,6.0,0.0,0.0,0.0,0.0,1.5,False,,1950,0.0,1.0,0.0,0.0,0.0,0.25,4,False
|
||||
Hermann Lang,West Germany,"[1953, 1954]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,2.0,False,,1950,0.0,1.0,0.0,0.0,0.0,1.0,2,False
|
||||
Claudio Langes,Italy,[1990],0.0,14.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Nicola Larini,Italy,"[1987, 1988, 1989, 1990, 1991, 1992, 1994, 1997]",0.0,75.0,49.0,0.0,0.0,1.0,0.0,7.0,False,,1990,0.0,0.6533333333333333,0.0,0.013333333333333334,0.0,0.09333333333333334,8,False
|
||||
Oscar Larrauri,Argentina,"[1988, 1989]",0.0,21.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.38095238095238093,0.0,0.0,0.0,0.0,2,False
|
||||
Gérard Larrousse,France,[1974],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Jud Larson,United States,"[1958, 1959]",0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.4,0.0,0.0,0.0,0.0,2,False
|
||||
Nicholas Latifi,Canada,"[2020, 2021, 2022]",0.0,61.0,61.0,0.0,0.0,0.0,0.0,9.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.14754098360655737,3,False
|
||||
Niki Lauda,Austria,"[1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1982, 1983, 1984, 1985]",3.0,177.0,171.0,24.0,25.0,54.0,24.0,420.5,False,"[1975, 1977, 1984]",1980,0.13559322033898305,0.9661016949152542,0.14124293785310735,0.3050847457627119,0.13559322033898305,2.3757062146892656,13,True
|
||||
Roger Laurent,Belgium,[1952],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Giovanni Lavaggi,Italy,"[1995, 1996]",0.0,10.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.7,0.0,0.0,0.0,0.0,2,False
|
||||
Chris Lawrence,United Kingdom,[1966],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Charles Leclerc,Monaco,"[2018, 2019, 2020, 2021, 2022]",0.0,104.0,103.0,18.0,5.0,24.0,7.0,868.0,True,,2020,0.17307692307692307,0.9903846153846154,0.04807692307692308,0.23076923076923078,0.0673076923076923,8.346153846153847,5,False
|
||||
Michel Leclère,France,"[1975, 1976]",0.0,8.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.875,0.0,0.0,0.0,0.0,2,False
|
||||
Neville Lederle,South Africa,"[1962, 1965]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,1.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.5,2,False
|
||||
Geoff Lees,United Kingdom,"[1978, 1979, 1980, 1982]",0.0,12.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.4166666666666667,0.0,0.0,0.0,0.0,4,False
|
||||
Gijs van Lennep,Netherlands,"[1971, 1973, 1974, 1975]",0.0,10.0,8.0,0.0,0.0,0.0,0.0,2.0,False,,1970,0.0,0.8,0.0,0.0,0.0,0.2,4,False
|
||||
Arthur Legat,Belgium,"[1952, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
JJ Lehto,Finland,"[1989, 1990, 1991, 1992, 1993, 1994]",0.0,70.0,62.0,0.0,0.0,1.0,0.0,10.0,False,,1990,0.0,0.8857142857142857,0.0,0.014285714285714285,0.0,0.14285714285714285,6,False
|
||||
Lamberto Leoni,Italy,"[1977, 1978]",0.0,5.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.2,0.0,0.0,0.0,0.0,2,False
|
||||
Les Leston,United Kingdom,"[1956, 1957]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Pierre Levegh,France,"[1950, 1951]",0.0,6.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Bayliss Levrett,United States,[1950],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Jackie Lewis,United Kingdom,"[1961, 1962]",0.0,10.0,9.0,0.0,0.0,0.0,0.0,3.0,False,,1960,0.0,0.9,0.0,0.0,0.0,0.3,2,False
|
||||
Stuart Lewis-Evans,United Kingdom,"[1957, 1958]",0.0,14.0,14.0,2.0,0.0,2.0,0.0,16.0,False,,1960,0.14285714285714285,1.0,0.0,0.14285714285714285,0.0,1.1428571428571428,2,False
|
||||
Guy Ligier,France,"[1966, 1967]",0.0,13.0,12.0,0.0,0.0,0.0,0.0,1.0,False,,1970,0.0,0.9230769230769231,0.0,0.0,0.0,0.07692307692307693,2,False
|
||||
Andy Linden,United States,"[1951, 1952, 1953, 1954, 1955, 1956, 1957]",0.0,8.0,7.0,0.0,0.0,0.0,0.0,5.0,False,,1950,0.0,0.875,0.0,0.0,0.0,0.625,7,False
|
||||
Roberto Lippi,Italy,"[1961, 1962, 1963]",0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,3,False
|
||||
Vitantonio Liuzzi,Italy,"[2005, 2006, 2007, 2009, 2010, 2011]",0.0,81.0,80.0,0.0,0.0,0.0,0.0,26.0,False,,2010,0.0,0.9876543209876543,0.0,0.0,0.0,0.32098765432098764,6,False
|
||||
Dries van der Lof,Netherlands,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Lella Lombardi,Italy,"[1974, 1975, 1976]",0.0,17.0,12.0,0.0,0.0,0.0,0.0,0.5,False,,1980,0.0,0.7058823529411765,0.0,0.0,0.0,0.029411764705882353,3,False
|
||||
Ricardo Londoño,Colombia,[1981],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ernst Loof,West Germany,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
André Lotterer,Germany,[2014],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Henri Louveau,France,"[1950, 1951]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
John Love,Rhodesia,"[1962, 1963, 1964, 1965, 1967, 1968, 1969, 1970, 1971, 1972]",0.0,10.0,9.0,0.0,0.0,1.0,0.0,6.0,False,,1970,0.0,0.9,0.0,0.1,0.0,0.6,10,False
|
||||
Pete Lovely,United States,"[1959, 1960, 1969, 1970, 1971]",0.0,11.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.6363636363636364,0.0,0.0,0.0,0.0,5,False
|
||||
Roger Loyer,France,[1954],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jean Lucas,France,[1955],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jean Lucienbonnet,France,[1959],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Erik Lundgren,Sweden,[1951],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Brett Lunger,United States,"[1975, 1976, 1977, 1978]",0.0,43.0,34.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.7906976744186046,0.0,0.0,0.0,0.0,4,False
|
||||
Mike MacDowel,United Kingdom,[1957],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Herbert MacKay-Fraser,United States,[1957],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bill Mackey,United States,[1951],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Lance Macklin,United Kingdom,"[1952, 1953, 1954, 1955]",0.0,15.0,13.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.8666666666666667,0.0,0.0,0.0,0.0,4,False
|
||||
Damien Magee,United Kingdom,"[1975, 1976]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Tony Maggs,South Africa,"[1961, 1962, 1963, 1964, 1965]",0.0,27.0,25.0,0.0,0.0,3.0,0.0,26.0,False,,1960,0.0,0.9259259259259259,0.0,0.1111111111111111,0.0,0.9629629629629629,5,False
|
||||
Mike Magill,United States,"[1957, 1958, 1959]",0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.75,0.0,0.0,0.0,0.0,3,False
|
||||
Umberto Maglioli,Italy,"[1953, 1954, 1955, 1956, 1957]",0.0,10.0,10.0,0.0,0.0,2.0,0.0,3.33,False,,1960,0.0,1.0,0.0,0.2,0.0,0.333,5,False
|
||||
Jan Magnussen,Denmark,"[1995, 1997, 1998]",0.0,25.0,24.0,0.0,0.0,0.0,0.0,1.0,False,,2000,0.0,0.96,0.0,0.0,0.0,0.04,3,False
|
||||
Kevin Magnussen,Denmark,"[2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022]",0.0,143.0,142.0,1.0,0.0,1.0,2.0,183.0,True,,2020,0.006993006993006993,0.993006993006993,0.0,0.006993006993006993,0.013986013986013986,1.2797202797202798,8,False
|
||||
Guy Mairesse,France,"[1950, 1951]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Willy Mairesse,Belgium,"[1960, 1961, 1962, 1963, 1965]",0.0,13.0,12.0,0.0,0.0,1.0,0.0,7.0,False,,1960,0.0,0.9230769230769231,0.0,0.07692307692307693,0.0,0.5384615384615384,5,False
|
||||
Pastor Maldonado,Venezuela,"[2011, 2012, 2013, 2014, 2015]",0.0,96.0,95.0,1.0,1.0,1.0,0.0,76.0,False,,2010,0.010416666666666666,0.9895833333333334,0.010416666666666666,0.010416666666666666,0.0,0.7916666666666666,5,False
|
||||
Nigel Mansell,United Kingdom,"[1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995]",1.0,191.0,187.0,32.0,31.0,59.0,30.0,480.0,False,[1992],1990,0.16753926701570682,0.9790575916230366,0.16230366492146597,0.3089005235602094,0.15706806282722513,2.513089005235602,15,True
|
||||
Sergio Mantovani,Italy,"[1953, 1954, 1955]",0.0,8.0,7.0,0.0,0.0,0.0,0.0,4.0,False,,1950,0.0,0.875,0.0,0.0,0.0,0.5,3,False
|
||||
Johnny Mantz,United States,[1953],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Robert Manzon,France,"[1950, 1951, 1952, 1953, 1954, 1955, 1956]",0.0,29.0,28.0,0.0,0.0,2.0,0.0,16.0,False,,1950,0.0,0.9655172413793104,0.0,0.06896551724137931,0.0,0.5517241379310345,7,False
|
||||
Onofre Marimón,Argentina,"[1951, 1953, 1954]",0.0,12.0,11.0,0.0,0.0,2.0,1.0,8.14,False,,1950,0.0,0.9166666666666666,0.0,0.16666666666666666,0.08333333333333333,0.6783333333333333,3,False
|
||||
Helmut Marko,Austria,"[1971, 1972]",0.0,10.0,10.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Tarso Marques,Brazil,"[1996, 1997, 2001]",0.0,26.0,24.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.9230769230769231,0.0,0.0,0.0,0.0,3,False
|
||||
Leslie Marr,United Kingdom,"[1954, 1955]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Tony Marsh,United Kingdom,"[1957, 1958, 1961]",0.0,5.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8,0.0,0.0,0.0,0.0,3,False
|
||||
Eugène Martin,France,[1950],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Pierluigi Martini,Italy,"[1984, 1985, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995]",0.0,124.0,118.0,0.0,0.0,0.0,0.0,18.0,False,,1990,0.0,0.9516129032258065,0.0,0.0,0.0,0.14516129032258066,10,False
|
||||
Jochen Mass,West Germany,"[1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1982]",0.0,114.0,105.0,0.0,1.0,8.0,2.0,71.0,False,,1980,0.0,0.9210526315789473,0.008771929824561403,0.07017543859649122,0.017543859649122806,0.6228070175438597,9,False
|
||||
Felipe Massa,Brazil,"[2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017]",0.0,272.0,269.0,16.0,11.0,41.0,15.0,1167.0,False,,2010,0.058823529411764705,0.9889705882352942,0.04044117647058824,0.15073529411764705,0.05514705882352941,4.290441176470588,15,False
|
||||
Cristiano da Matta,Brazil,"[2003, 2004]",0.0,28.0,28.0,0.0,0.0,0.0,0.0,13.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.4642857142857143,2,False
|
||||
Michael May,Switzerland,[1961],0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,1,False
|
||||
Timmy Mayer,United States,[1962],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Nikita Mazepin,RAF,[2021],0.0,22.0,21.0,0.0,0.0,0.0,0.0,0.0,False,,2020,0.0,0.9545454545454546,0.0,0.0,0.0,0.0,1,False
|
||||
François Mazet,France,[1971],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Gastón Mazzacane,Argentina,"[2000, 2001]",0.0,21.0,21.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Kenneth McAlpine,United Kingdom,"[1952, 1953, 1955]",0.0,7.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Perry McCarthy,United Kingdom,[1992],0.0,11.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ernie McCoy,United States,"[1953, 1954]",0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,2,False
|
||||
Johnny McDowell,United States,"[1950, 1951, 1952]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Jack McGrath,United States,"[1950, 1951, 1952, 1953, 1954, 1955]",0.0,6.0,6.0,1.0,0.0,2.0,1.0,9.0,False,,1950,0.16666666666666666,1.0,0.0,0.3333333333333333,0.16666666666666666,1.5,6,False
|
||||
Brian McGuire,Australia,[1977],0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bruce McLaren,New Zealand,"[1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970]",0.0,104.0,100.0,0.0,4.0,27.0,3.0,188.5,False,,1960,0.0,0.9615384615384616,0.038461538461538464,0.25961538461538464,0.028846153846153848,1.8125,13,False
|
||||
Allan McNish,United Kingdom,[2002],0.0,17.0,16.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.9411764705882353,0.0,0.0,0.0,0.0,1,False
|
||||
Graham McRae,New Zealand,[1973],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jim McWithey,United States,"[1959, 1960]",0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.4,0.0,0.0,0.0,0.0,2,False
|
||||
Carlos Menditeguy,Argentina,"[1953, 1954, 1955, 1956, 1957, 1958, 1960]",0.0,11.0,10.0,0.0,0.0,1.0,0.0,9.0,False,,1960,0.0,0.9090909090909091,0.0,0.09090909090909091,0.0,0.8181818181818182,7,False
|
||||
Roberto Merhi,Spain,[2015],0.0,14.0,13.0,0.0,0.0,0.0,0.0,0.0,False,,2020,0.0,0.9285714285714286,0.0,0.0,0.0,0.0,1,False
|
||||
Harry Merkel,West Germany,[1952],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Arturo Merzario,Italy,"[1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979]",0.0,85.0,57.0,0.0,0.0,0.0,0.0,11.0,False,,1980,0.0,0.6705882352941176,0.0,0.0,0.0,0.12941176470588237,8,False
|
||||
Roberto Mieres,Argentina,"[1953, 1954, 1955]",0.0,17.0,17.0,0.0,0.0,0.0,1.0,13.0,False,,1950,0.0,1.0,0.0,0.0,0.058823529411764705,0.7647058823529411,3,False
|
||||
François Migault,France,"[1972, 1974, 1975]",0.0,16.0,13.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.8125,0.0,0.0,0.0,0.0,3,False
|
||||
John Miles,United Kingdom,"[1969, 1970]",0.0,15.0,12.0,0.0,0.0,0.0,0.0,2.0,False,,1970,0.0,0.8,0.0,0.0,0.0,0.13333333333333333,2,False
|
||||
Ken Miles,United Kingdom,[1961],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
André Milhoux,Belgium,[1956],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Chet Miller,United States,"[1951, 1952]",0.0,4.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Gerhard Mitter,West Germany,"[1963, 1964, 1965]",0.0,7.0,5.0,0.0,0.0,0.0,0.0,3.0,False,,1960,0.0,0.7142857142857143,0.0,0.0,0.0,0.42857142857142855,3,False
|
||||
Stefano Modena,Italy,"[1987, 1988, 1989, 1990, 1991, 1992]",0.0,81.0,70.0,0.0,0.0,2.0,0.0,17.0,False,,1990,0.0,0.8641975308641975,0.0,0.024691358024691357,0.0,0.20987654320987653,6,False
|
||||
Thomas Monarch,United States,[1963],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Franck Montagny,France,[2006],0.0,7.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Tiago Monteiro,Portugal,"[2005, 2006]",0.0,37.0,37.0,0.0,0.0,1.0,0.0,7.0,False,,2010,0.0,1.0,0.0,0.02702702702702703,0.0,0.1891891891891892,2,False
|
||||
Andrea Montermini,Italy,"[1994, 1995, 1996]",0.0,29.0,19.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.6551724137931034,0.0,0.0,0.0,0.0,3,False
|
||||
Peter Monteverdi,Switzerland,[1961],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Robin Montgomerie-Charrington,United Kingdom,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Juan Pablo Montoya,Colombia,"[2001, 2002, 2003, 2004, 2005, 2006]",0.0,95.0,94.0,13.0,7.0,30.0,12.0,307.0,False,,2000,0.1368421052631579,0.9894736842105263,0.07368421052631578,0.3157894736842105,0.12631578947368421,3.231578947368421,6,False
|
||||
Gianni Morbidelli,Italy,"[1990, 1991, 1992, 1994, 1995, 1997]",0.0,70.0,67.0,0.0,0.0,1.0,0.0,8.5,False,,1990,0.0,0.9571428571428572,0.0,0.014285714285714285,0.0,0.12142857142857143,6,False
|
||||
Roberto Moreno,Brazil,"[1982, 1987, 1989, 1990, 1991, 1992, 1995]",0.0,77.0,41.0,0.0,0.0,1.0,1.0,15.0,False,,1990,0.0,0.5324675324675324,0.0,0.012987012987012988,0.012987012987012988,0.19480519480519481,7,False
|
||||
Dave Morgan,United Kingdom,[1975],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Silvio Moser,Switzerland,"[1967, 1968, 1969, 1970, 1971]",0.0,20.0,12.0,0.0,0.0,0.0,0.0,3.0,False,,1970,0.0,0.6,0.0,0.0,0.0,0.15,5,False
|
||||
Bill Moss,United Kingdom,[1959],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Stirling Moss,United Kingdom,"[1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961]",0.0,67.0,66.0,16.0,16.0,24.0,19.0,185.64,False,,1960,0.23880597014925373,0.9850746268656716,0.23880597014925373,0.3582089552238806,0.2835820895522388,2.7707462686567164,11,False
|
||||
Gino Munaron,Italy,[1960],0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
David Murray,United Kingdom,"[1950, 1951, 1952]",0.0,5.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.8,0.0,0.0,0.0,0.0,3,False
|
||||
Luigi Musso,Italy,"[1953, 1954, 1955, 1956, 1957, 1958]",0.0,25.0,24.0,0.0,1.0,7.0,1.0,44.0,False,,1960,0.0,0.96,0.04,0.28,0.04,1.76,6,False
|
||||
Kazuki Nakajima,Japan,"[2007, 2008, 2009]",0.0,36.0,36.0,0.0,0.0,0.0,0.0,9.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.25,3,False
|
||||
Satoru Nakajima,Japan,"[1987, 1988, 1989, 1990, 1991]",0.0,80.0,74.0,0.0,0.0,0.0,1.0,16.0,False,,1990,0.0,0.925,0.0,0.0,0.0125,0.2,5,False
|
||||
Shinji Nakano,Japan,"[1997, 1998]",0.0,33.0,33.0,0.0,0.0,0.0,0.0,2.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.06060606060606061,2,False
|
||||
Duke Nalon,United States,"[1951, 1952, 1953]",0.0,5.0,3.0,1.0,0.0,0.0,0.0,0.0,False,,1950,0.2,0.6,0.0,0.0,0.0,0.0,3,False
|
||||
Alessandro Nannini,Italy,"[1986, 1987, 1988, 1989, 1990]",0.0,78.0,76.0,0.0,1.0,9.0,2.0,65.0,False,,1990,0.0,0.9743589743589743,0.01282051282051282,0.11538461538461539,0.02564102564102564,0.8333333333333334,5,False
|
||||
Emanuele Naspetti,Italy,"[1992, 1993]",0.0,6.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Felipe Nasr,Brazil,"[2015, 2016]",0.0,40.0,39.0,0.0,0.0,0.0,0.0,29.0,False,,2020,0.0,0.975,0.0,0.0,0.0,0.725,2,False
|
||||
Massimo Natili,Italy,[1961],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Brian Naylor,United Kingdom,"[1957, 1958, 1959, 1960, 1961]",0.0,8.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.875,0.0,0.0,0.0,0.0,5,False
|
||||
Mike Nazaruk,United States,"[1951, 1953, 1954]",0.0,4.0,3.0,0.0,0.0,1.0,0.0,8.0,False,,1950,0.0,0.75,0.0,0.25,0.0,2.0,3,False
|
||||
Tiff Needell,United Kingdom,[1980],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Jac Nellemann,Denmark,[1976],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Patrick Nève,Belgium,"[1976, 1977, 1978]",0.0,14.0,10.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.7142857142857143,0.0,0.0,0.0,0.0,3,False
|
||||
John Nicholson,New Zealand,"[1974, 1975]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Cal Niday,United States,"[1953, 1954, 1955]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Helmut Niedermayr,West Germany,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Brausch Niemann,South Africa,"[1963, 1965]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Gunnar Nilsson,Sweden,"[1976, 1977]",0.0,32.0,31.0,0.0,1.0,4.0,1.0,31.0,False,,1980,0.0,0.96875,0.03125,0.125,0.03125,0.96875,2,False
|
||||
Hideki Noda,Japan,[1994],0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Lando Norris,United Kingdom,"[2019, 2020, 2021, 2022]",0.0,83.0,83.0,1.0,0.0,6.0,5.0,428.0,True,,2020,0.012048192771084338,1.0,0.0,0.07228915662650602,0.060240963855421686,5.156626506024097,4,False
|
||||
Rodney Nuckey,United Kingdom,[1953],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Robert O'Brien,United States,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Esteban Ocon,France,"[2016, 2017, 2018, 2020, 2021, 2022]",0.0,112.0,112.0,0.0,1.0,2.0,0.0,364.0,True,,2020,0.0,1.0,0.008928571428571428,0.017857142857142856,0.0,3.25,6,False
|
||||
Pat O'Connor,United States,"[1954, 1955, 1956, 1957, 1958]",0.0,6.0,5.0,1.0,0.0,0.0,0.0,0.0,False,,1960,0.16666666666666666,0.8333333333333334,0.0,0.0,0.0,0.0,5,False
|
||||
Casimiro de Oliveira,Portugal,[1958],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jackie Oliver,United Kingdom,"[1968, 1969, 1970, 1971, 1972, 1973, 1977]",0.0,52.0,50.0,0.0,0.0,2.0,1.0,13.0,False,,1970,0.0,0.9615384615384616,0.0,0.038461538461538464,0.019230769230769232,0.25,7,False
|
||||
Danny Ongais,United States,"[1977, 1978]",0.0,6.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Rikky von Opel,Liechtenstein,"[1973, 1974]",0.0,14.0,10.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.7142857142857143,0.0,0.0,0.0,0.0,2,False
|
||||
Karl Oppitzhauser,Austria,[1976],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Fritz d'Orey,Brazil,[1959],0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Arthur Owen,United Kingdom,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Carlos Pace,Brazil,"[1972, 1973, 1974, 1975, 1976, 1977]",0.0,73.0,72.0,1.0,1.0,6.0,5.0,58.0,False,,1970,0.0136986301369863,0.9863013698630136,0.0136986301369863,0.0821917808219178,0.0684931506849315,0.7945205479452054,6,False
|
||||
Nello Pagani,Italy,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Riccardo Paletti,Italy,[1982],0.0,8.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.25,0.0,0.0,0.0,0.0,1,False
|
||||
Torsten Palm,Sweden,[1975],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Jolyon Palmer,United Kingdom,"[2016, 2017]",0.0,37.0,35.0,0.0,0.0,0.0,0.0,9.0,False,,2020,0.0,0.9459459459459459,0.0,0.0,0.0,0.24324324324324326,2,False
|
||||
Jonathan Palmer,United Kingdom,"[1983, 1984, 1985, 1986, 1987, 1988, 1989]",0.0,88.0,83.0,0.0,0.0,0.0,1.0,14.0,False,,1990,0.0,0.9431818181818182,0.0,0.0,0.011363636363636364,0.1590909090909091,7,False
|
||||
Olivier Panis,France,"[1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004]",0.0,158.0,157.0,0.0,1.0,5.0,0.0,76.0,False,,2000,0.0,0.9936708860759493,0.006329113924050633,0.03164556962025317,0.0,0.4810126582278481,10,False
|
||||
Giorgio Pantano,Italy,[2004],0.0,15.0,14.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.9333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Massimiliano Papis,Italy,[1995],0.0,7.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Mike Parkes,United Kingdom,"[1959, 1966, 1967]",0.0,7.0,6.0,1.0,0.0,2.0,0.0,14.0,False,,1960,0.14285714285714285,0.8571428571428571,0.0,0.2857142857142857,0.0,2.0,3,False
|
||||
Reg Parnell,United Kingdom,"[1950, 1951, 1952, 1954]",0.0,7.0,6.0,0.0,0.0,1.0,0.0,9.0,False,,1950,0.0,0.8571428571428571,0.0,0.14285714285714285,0.0,1.2857142857142858,4,False
|
||||
Tim Parnell,United Kingdom,"[1959, 1961, 1963]",0.0,4.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,3,False
|
||||
Johnnie Parsons,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958]",0.0,9.0,9.0,0.0,1.0,1.0,1.0,12.0,False,,1950,0.0,1.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,1.3333333333333333,9,False
|
||||
Riccardo Patrese,Italy,"[1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993]",0.0,257.0,256.0,8.0,6.0,37.0,13.0,281.0,False,,1980,0.0311284046692607,0.9961089494163424,0.023346303501945526,0.14396887159533073,0.05058365758754864,1.093385214007782,17,False
|
||||
Al Pease,Canada,"[1967, 1968, 1969]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,3,False
|
||||
Roger Penske,United States,"[1961, 1962]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Cesare Perdisa,Italy,"[1955, 1956, 1957]",0.0,8.0,8.0,0.0,0.0,2.0,0.0,5.0,False,,1960,0.0,1.0,0.0,0.25,0.0,0.625,3,False
|
||||
Sergio Pérez,Mexico,"[2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]",0.0,240.0,236.0,1.0,4.0,27.0,9.0,1219.0,True,,2020,0.004166666666666667,0.9833333333333333,0.016666666666666666,0.1125,0.0375,5.079166666666667,12,False
|
||||
Luis Pérez-Sala,Spain,"[1988, 1989]",0.0,32.0,26.0,0.0,0.0,0.0,0.0,1.0,False,,1990,0.0,0.8125,0.0,0.0,0.0,0.03125,2,False
|
||||
Larry Perkins,Australia,"[1974, 1976, 1977]",0.0,15.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.7333333333333333,0.0,0.0,0.0,0.0,3,False
|
||||
Henri Pescarolo,France,"[1968, 1970, 1971, 1972, 1973, 1974, 1976]",0.0,64.0,57.0,0.0,0.0,1.0,1.0,12.0,False,,1970,0.0,0.890625,0.0,0.015625,0.015625,0.1875,7,False
|
||||
Alessandro Pesenti-Rossi,Italy,[1976],0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.75,0.0,0.0,0.0,0.0,1,False
|
||||
Josef Peters,West Germany,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ronnie Peterson,Sweden,"[1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978]",0.0,123.0,123.0,14.0,10.0,26.0,9.0,206.0,False,,1970,0.11382113821138211,1.0,0.08130081300813008,0.21138211382113822,0.07317073170731707,1.6747967479674797,9,False
|
||||
Vitaly Petrov,Russia,"[2010, 2011, 2012]",0.0,58.0,57.0,0.0,0.0,1.0,1.0,64.0,False,,2010,0.0,0.9827586206896551,0.0,0.017241379310344827,0.017241379310344827,1.103448275862069,3,False
|
||||
Alfredo Pián,Argentina,[1950],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Oscar Piastri,Australia,[2023],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,True,,2020,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Charles Pic,France,"[2012, 2013]",0.0,39.0,39.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
François Picard,France,[1958],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ernie Pieterse,South Africa,"[1962, 1963, 1965]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,3,False
|
||||
Paul Pietsch,West Germany,"[1950, 1951, 1952]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
André Pilette,Belgium,"[1951, 1953, 1954, 1956, 1961, 1963, 1964]",0.0,14.0,9.0,0.0,0.0,0.0,0.0,2.0,False,,1960,0.0,0.6428571428571429,0.0,0.0,0.0,0.14285714285714285,7,False
|
||||
Teddy Pilette,Belgium,"[1974, 1977]",0.0,4.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.25,0.0,0.0,0.0,0.0,2,False
|
||||
Luigi Piotti,Italy,"[1955, 1956, 1957, 1958]",0.0,8.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.625,0.0,0.0,0.0,0.0,4,False
|
||||
David Piper,United Kingdom,"[1959, 1960]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Nelson Piquet,Brazil,"[1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991]",3.0,207.0,204.0,24.0,23.0,60.0,23.0,481.5,False,"[1981, 1983, 1987]",1980,0.11594202898550725,0.9855072463768116,0.1111111111111111,0.2898550724637681,0.1111111111111111,2.3260869565217392,14,True
|
||||
Nelson Piquet Jr.,Brazil,"[2008, 2009]",0.0,28.0,28.0,0.0,0.0,1.0,0.0,19.0,False,,2010,0.0,1.0,0.0,0.03571428571428571,0.0,0.6785714285714286,2,False
|
||||
Renato Pirocchi,Italy,[1961],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Didier Pironi,France,"[1978, 1979, 1980, 1981, 1982]",0.0,72.0,70.0,4.0,3.0,13.0,5.0,101.0,False,,1980,0.05555555555555555,0.9722222222222222,0.041666666666666664,0.18055555555555555,0.06944444444444445,1.4027777777777777,5,False
|
||||
Emanuele Pirro,Italy,"[1989, 1990, 1991]",0.0,40.0,37.0,0.0,0.0,0.0,0.0,3.0,False,,1990,0.0,0.925,0.0,0.0,0.0,0.075,3,False
|
||||
Antônio Pizzonia,Brazil,"[2003, 2004, 2005]",0.0,20.0,20.0,0.0,0.0,0.0,0.0,8.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.4,3,False
|
||||
Eric van de Poele,Belgium,"[1991, 1992]",0.0,29.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.1724137931034483,0.0,0.0,0.0,0.0,2,False
|
||||
Jacques Pollet,France,"[1954, 1955]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Ben Pon,Netherlands,[1962],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Dennis Poore,United Kingdom,[1952],0.0,2.0,2.0,0.0,0.0,0.0,0.0,3.0,False,,1950,0.0,1.0,0.0,0.0,0.0,1.5,1,False
|
||||
Alfonso de Portago,Spain,"[1956, 1957]",0.0,5.0,5.0,0.0,0.0,1.0,0.0,4.0,False,,1960,0.0,1.0,0.0,0.2,0.0,0.8,2,False
|
||||
Sam Posey,United States,"[1971, 1972]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Charles Pozzi,France,[1950],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jackie Pretorius,South Africa,"[1965, 1968, 1971, 1973]",0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.75,0.0,0.0,0.0,0.0,4,False
|
||||
Ernesto Prinoth,Italy,[1962],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
David Prophet,United Kingdom,"[1963, 1965]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Alain Prost,France,"[1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1993]",4.0,202.0,199.0,33.0,51.0,106.0,41.0,768.5,False,"[1985, 1986, 1989, 1993]",1990,0.16336633663366337,0.9851485148514851,0.2524752475247525,0.5247524752475248,0.20297029702970298,3.8044554455445545,13,True
|
||||
Tom Pryce,United Kingdom,"[1974, 1975, 1976, 1977]",0.0,42.0,42.0,1.0,0.0,2.0,0.0,19.0,False,,1980,0.023809523809523808,1.0,0.0,0.047619047619047616,0.0,0.4523809523809524,4,False
|
||||
David Purley,United Kingdom,"[1973, 1974, 1977]",0.0,11.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.6363636363636364,0.0,0.0,0.0,0.0,3,False
|
||||
Clive Puzey,Rhodesia,[1965],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Dieter Quester,Austria,"[1969, 1974]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Ian Raby,United Kingdom,"[1963, 1964, 1965]",0.0,7.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.42857142857142855,0.0,0.0,0.0,0.0,3,False
|
||||
Bobby Rahal,United States,[1978],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Kimi Räikkönen,Finland,"[2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021]",1.0,353.0,349.0,18.0,21.0,103.0,46.0,1873.0,False,[2007],2010,0.05099150141643059,0.9886685552407932,0.059490084985835696,0.29178470254957506,0.13031161473087818,5.305949008498583,19,True
|
||||
Hermano da Silva Ramos,Brazil,"[1955, 1956]",0.0,7.0,7.0,0.0,0.0,0.0,0.0,2.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.2857142857142857,2,False
|
||||
Pierre-Henri Raphanel,France,"[1988, 1989]",0.0,17.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.058823529411764705,0.0,0.0,0.0,0.0,2,False
|
||||
Dick Rathmann,United States,"[1950, 1956, 1958, 1959, 1960]",0.0,6.0,5.0,1.0,0.0,0.0,0.0,2.0,False,,1960,0.16666666666666666,0.8333333333333334,0.0,0.0,0.0,0.3333333333333333,5,False
|
||||
Jim Rathmann,United States,"[1950, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,10.0,10.0,0.0,1.0,4.0,2.0,29.0,False,,1960,0.0,1.0,0.1,0.4,0.2,2.9,10,False
|
||||
Roland Ratzenberger,Austria,[1994],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Héctor Rebaque,Mexico,"[1977, 1978, 1979, 1980, 1981]",0.0,58.0,41.0,0.0,0.0,0.0,0.0,13.0,False,,1980,0.0,0.7068965517241379,0.0,0.0,0.0,0.22413793103448276,5,False
|
||||
Brian Redman,United Kingdom,"[1968, 1970, 1971, 1972, 1973, 1974]",0.0,15.0,12.0,0.0,0.0,1.0,0.0,8.0,False,,1970,0.0,0.8,0.0,0.06666666666666667,0.0,0.5333333333333333,6,False
|
||||
Jimmy Reece,United States,"[1952, 1954, 1955, 1956, 1957, 1958]",0.0,6.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,6,False
|
||||
Ray Reed,Rhodesia,[1965],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Alan Rees,United Kingdom,[1967],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Clay Regazzoni,Switzerland,"[1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980]",0.0,139.0,132.0,5.0,5.0,28.0,15.0,209.0,False,,1980,0.03597122302158273,0.9496402877697842,0.03597122302158273,0.2014388489208633,0.1079136690647482,1.5035971223021583,11,False
|
||||
Paul di Resta,United Kingdom,"[2011, 2012, 2013, 2017]",0.0,59.0,59.0,0.0,0.0,0.0,0.0,121.0,False,,2010,0.0,1.0,0.0,0.0,0.0,2.0508474576271185,4,False
|
||||
Carlos Reutemann,Argentina,"[1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982]",0.0,146.0,146.0,6.0,12.0,45.0,6.0,298.0,False,,1980,0.0410958904109589,1.0,0.0821917808219178,0.3082191780821918,0.0410958904109589,2.041095890410959,11,False
|
||||
Lance Reventlow,United States,[1960],0.0,4.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.25,0.0,0.0,0.0,0.0,1,False
|
||||
Peter Revson,United States,"[1964, 1971, 1972, 1973, 1974]",0.0,32.0,30.0,1.0,2.0,8.0,0.0,61.0,False,,1970,0.03125,0.9375,0.0625,0.25,0.0,1.90625,5,False
|
||||
John Rhodes,United Kingdom,[1965],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Alex Ribeiro,Brazil,"[1976, 1977, 1979]",0.0,20.0,10.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5,0.0,0.0,0.0,0.0,3,False
|
||||
Daniel Ricciardo,Australia,"[2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]",0.0,232.0,232.0,3.0,8.0,32.0,16.0,1311.0,False,,2020,0.01293103448275862,1.0,0.034482758620689655,0.13793103448275862,0.06896551724137931,5.650862068965517,12,False
|
||||
Ken Richardson,United Kingdom,[1951],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Fritz Riess,West Germany,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jim Rigsby,United States,[1952],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Jochen Rindt,Austria,"[1964, 1965, 1966, 1967, 1968, 1969, 1970]",1.0,62.0,60.0,10.0,6.0,13.0,3.0,107.0,False,[1970],1970,0.16129032258064516,0.967741935483871,0.0967741935483871,0.20967741935483872,0.04838709677419355,1.7258064516129032,7,True
|
||||
John Riseley-Prichard,United Kingdom,[1954],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Giovanni de Riu,Italy,[1954],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Richard Robarts,United Kingdom,[1974],0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.75,0.0,0.0,0.0,0.0,1,False
|
||||
Pedro Rodríguez,Mexico,"[1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971]",0.0,54.0,54.0,0.0,2.0,7.0,1.0,71.0,False,,1970,0.0,1.0,0.037037037037037035,0.12962962962962962,0.018518518518518517,1.3148148148148149,9,False
|
||||
Ricardo Rodríguez,Mexico,"[1961, 1962]",0.0,6.0,5.0,0.0,0.0,0.0,0.0,4.0,False,,1960,0.0,0.8333333333333334,0.0,0.0,0.0,0.6666666666666666,2,False
|
||||
Alberto Rodriguez Larreta,Argentina,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Franco Rol,Italy,"[1950, 1951, 1952]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Alan Rollinson,United Kingdom,[1965],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Tony Rolt,United Kingdom,"[1950, 1953, 1955]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Bertil Roos,Sweden,[1974],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Pedro de la Rosa,Spain,"[1999, 2000, 2001, 2002, 2005, 2006, 2010, 2011, 2012]",0.0,107.0,104.0,0.0,0.0,1.0,1.0,35.0,False,,2010,0.0,0.9719626168224299,0.0,0.009345794392523364,0.009345794392523364,0.32710280373831774,9,False
|
||||
Keke Rosberg,Finland,"[1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986]",1.0,128.0,114.0,5.0,5.0,17.0,3.0,159.5,False,[1982],1980,0.0390625,0.890625,0.0390625,0.1328125,0.0234375,1.24609375,9,True
|
||||
Nico Rosberg,Germany,"[2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016]",1.0,206.0,206.0,30.0,23.0,57.0,20.0,1594.5,False,[2016],2010,0.14563106796116504,1.0,0.11165048543689321,0.2766990291262136,0.0970873786407767,7.740291262135922,11,True
|
||||
Mauri Rose,United States,"[1950, 1951]",0.0,2.0,2.0,0.0,0.0,1.0,0.0,4.0,False,,1950,0.0,1.0,0.0,0.5,0.0,2.0,2,False
|
||||
Louis Rosier,France,"[1950, 1951, 1952, 1953, 1954, 1955, 1956]",0.0,38.0,38.0,0.0,0.0,2.0,0.0,18.0,False,,1950,0.0,1.0,0.0,0.05263157894736842,0.0,0.47368421052631576,7,False
|
||||
Ricardo Rosset,Brazil,"[1996, 1997, 1998]",0.0,33.0,26.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.7878787878787878,0.0,0.0,0.0,0.0,3,False
|
||||
Alexander Rossi,United States,[2015],0.0,7.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,2020,0.0,0.7142857142857143,0.0,0.0,0.0,0.0,1,False
|
||||
Huub Rothengatter,Netherlands,"[1984, 1985, 1986]",0.0,30.0,25.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.8333333333333334,0.0,0.0,0.0,0.0,3,False
|
||||
Basil van Rooyen,South Africa,"[1968, 1969]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Lloyd Ruby,United States,"[1960, 1961]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Jean-Claude Rudaz,Switzerland,[1964],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
George Russell,United Kingdom,"[2019, 2020, 2021, 2022]",0.0,83.0,83.0,1.0,1.0,9.0,5.0,300.0,True,,2020,0.012048192771084338,1.0,0.012048192771084338,0.10843373493975904,0.060240963855421686,3.6144578313253013,4,False
|
||||
Eddie Russo,United States,"[1955, 1956, 1957, 1960]",0.0,7.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5714285714285714,0.0,0.0,0.0,0.0,4,False
|
||||
Paul Russo,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,11.0,8.0,0.0,0.0,1.0,1.0,8.5,False,,1960,0.0,0.7272727272727273,0.0,0.09090909090909091,0.09090909090909091,0.7727272727272727,11,False
|
||||
Troy Ruttman,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1960]",0.0,12.0,8.0,0.0,1.0,1.0,0.0,9.5,False,,1950,0.0,0.6666666666666666,0.08333333333333333,0.08333333333333333,0.0,0.7916666666666666,10,False
|
||||
Peter Ryan,Canada,[1961],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Eddie Sachs,United States,"[1957, 1958, 1959, 1960]",0.0,7.0,4.0,1.0,0.0,0.0,0.0,0.0,False,,1960,0.14285714285714285,0.5714285714285714,0.0,0.0,0.0,0.0,4,False
|
||||
Bob Said,United States,[1959],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Carlos Sainz Jr.,Spain,"[2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]",0.0,164.0,163.0,3.0,1.0,15.0,3.0,794.5,True,,2020,0.018292682926829267,0.9939024390243902,0.006097560975609756,0.09146341463414634,0.018292682926829267,4.844512195121951,8,False
|
||||
Eliseo Salazar,Chile,"[1981, 1982, 1983]",0.0,37.0,24.0,0.0,0.0,0.0,0.0,3.0,False,,1980,0.0,0.6486486486486487,0.0,0.0,0.0,0.08108108108108109,3,False
|
||||
Mika Salo,Finland,"[1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002]",0.0,111.0,109.0,0.0,0.0,2.0,0.0,33.0,False,,2000,0.0,0.9819819819819819,0.0,0.018018018018018018,0.0,0.2972972972972973,8,False
|
||||
Roy Salvadori,United Kingdom,"[1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962]",0.0,50.0,47.0,0.0,0.0,2.0,0.0,19.0,False,,1960,0.0,0.94,0.0,0.04,0.0,0.38,11,False
|
||||
Consalvo Sanesi,Italy,"[1950, 1951]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,3.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.6,2,False
|
||||
Stéphane Sarrazin,France,[1999],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Logan Sargeant,United States,[2023],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,True,,2020,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Takuma Sato,Japan,"[2002, 2003, 2004, 2005, 2006, 2007, 2008]",0.0,92.0,90.0,0.0,0.0,1.0,0.0,44.0,False,,2000,0.0,0.9782608695652174,0.0,0.010869565217391304,0.0,0.4782608695652174,7,False
|
||||
Carl Scarborough,United States,"[1951, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Ludovico Scarfiotti,Italy,"[1963, 1964, 1965, 1966, 1967, 1968]",0.0,12.0,10.0,0.0,1.0,1.0,1.0,17.0,False,,1970,0.0,0.8333333333333334,0.08333333333333333,0.08333333333333333,0.08333333333333333,1.4166666666666667,6,False
|
||||
Giorgio Scarlatti,Italy,"[1956, 1957, 1958, 1959, 1960, 1961]",0.0,15.0,12.0,0.0,0.0,0.0,0.0,1.0,False,,1960,0.0,0.8,0.0,0.0,0.0,0.06666666666666667,6,False
|
||||
Ian Scheckter,South Africa,"[1974, 1975, 1976, 1977]",0.0,20.0,18.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.9,0.0,0.0,0.0,0.0,4,False
|
||||
Jody Scheckter,South Africa,"[1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980]",1.0,113.0,112.0,3.0,10.0,33.0,5.0,246.0,False,[1979],1980,0.02654867256637168,0.9911504424778761,0.08849557522123894,0.2920353982300885,0.04424778761061947,2.1769911504424777,9,True
|
||||
Harry Schell,United States,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,57.0,56.0,0.0,0.0,2.0,0.0,32.0,False,,1960,0.0,0.9824561403508771,0.0,0.03508771929824561,0.0,0.5614035087719298,11,False
|
||||
Tim Schenken,Australia,"[1970, 1971, 1972, 1973, 1974]",0.0,36.0,34.0,0.0,0.0,1.0,0.0,7.0,False,,1970,0.0,0.9444444444444444,0.0,0.027777777777777776,0.0,0.19444444444444445,5,False
|
||||
Albert Scherrer,Switzerland,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Domenico Schiattarella,Italy,"[1994, 1995]",0.0,7.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.8571428571428571,0.0,0.0,0.0,0.0,2,False
|
||||
Heinz Schiller,Switzerland,[1962],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bill Schindler,United States,"[1950, 1951, 1952]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Jean-Louis Schlesser,France,"[1983, 1988]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Jo Schlesser,France,[1968],0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bernd Schneider,West Germany,"[1988, 1989, 1990]",0.0,34.0,9.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.2647058823529412,0.0,0.0,0.0,0.0,3,False
|
||||
Rudolf Schoeller,Switzerland,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Rob Schroeder,United States,[1962],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Michael Schumacher,Germany,"[1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2010, 2011, 2012]",7.0,308.0,306.0,68.0,91.0,155.0,77.0,1566.0,False,"[1994, 1995, 2000, 2001, 2002, 2003, 2004]",2000,0.22077922077922077,0.9935064935064936,0.29545454545454547,0.5032467532467533,0.25,5.084415584415584,19,True
|
||||
Mick Schumacher,Germany,"[2021, 2022]",0.0,44.0,43.0,0.0,0.0,0.0,0.0,12.0,False,,2020,0.0,0.9772727272727273,0.0,0.0,0.0,0.2727272727272727,2,False
|
||||
Ralf Schumacher,Germany,"[1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007]",0.0,181.0,180.0,6.0,6.0,27.0,8.0,329.0,False,,2000,0.03314917127071823,0.994475138121547,0.03314917127071823,0.14917127071823205,0.04419889502762431,1.8176795580110496,11,False
|
||||
Vern Schuppan,Australia,"[1972, 1974, 1975, 1977]",0.0,13.0,9.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.6923076923076923,0.0,0.0,0.0,0.0,4,False
|
||||
Adolfo Schwelm Cruz,Argentina,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bob Scott,United States,"[1952, 1953, 1954]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Archie Scott Brown,United Kingdom,[1956],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Piero Scotti,Italy,[1956],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Wolfgang Seidel,West Germany,"[1953, 1958, 1960, 1961, 1962]",0.0,12.0,10.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8333333333333334,0.0,0.0,0.0,0.0,5,False
|
||||
Günther Seiffert,West Germany,[1962],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ayrton Senna,Brazil,"[1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994]",3.0,162.0,161.0,65.0,41.0,80.0,19.0,610.0,False,"[1988, 1990, 1991]",1990,0.4012345679012346,0.9938271604938271,0.25308641975308643,0.49382716049382713,0.11728395061728394,3.765432098765432,11,True
|
||||
Bruno Senna,Brazil,"[2010, 2011, 2012]",0.0,46.0,46.0,0.0,0.0,0.0,1.0,33.0,False,,2010,0.0,1.0,0.0,0.0,0.021739130434782608,0.717391304347826,3,False
|
||||
Dorino Serafini,Italy,[1950],0.0,1.0,1.0,0.0,0.0,1.0,0.0,3.0,False,,1950,0.0,1.0,0.0,1.0,0.0,3.0,1,False
|
||||
Chico Serra,Brazil,"[1981, 1982, 1983]",0.0,33.0,18.0,0.0,0.0,0.0,0.0,1.0,False,,1980,0.0,0.5454545454545454,0.0,0.0,0.0,0.030303030303030304,3,False
|
||||
Doug Serrurier,South Africa,"[1962, 1963, 1965]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,3,False
|
||||
Johnny Servoz-Gavin,France,"[1967, 1968, 1969, 1970]",0.0,13.0,12.0,0.0,0.0,1.0,0.0,9.0,False,,1970,0.0,0.9230769230769231,0.0,0.07692307692307693,0.0,0.6923076923076923,4,False
|
||||
Tony Settember,United States,"[1962, 1963]",0.0,7.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8571428571428571,0.0,0.0,0.0,0.0,2,False
|
||||
Hap Sharp,United States,"[1961, 1962, 1963, 1964]",0.0,6.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,4,False
|
||||
Brian Shawe-Taylor,United Kingdom,"[1950, 1951]",0.0,3.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,2,False
|
||||
Carroll Shelby,United States,"[1958, 1959]",0.0,8.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Tony Shelly,New Zealand,[1962],0.0,3.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.3333333333333333,0.0,0.0,0.0,0.0,1,False
|
||||
Jo Siffert,Switzerland,"[1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971]",0.0,100.0,96.0,2.0,2.0,6.0,4.0,68.0,False,,1970,0.02,0.96,0.02,0.06,0.04,0.68,10,False
|
||||
André Simon,France,"[1951, 1952, 1955, 1956, 1957]",0.0,12.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.9166666666666666,0.0,0.0,0.0,0.0,5,False
|
||||
Sergey Sirotkin,Russia,[2018],0.0,21.0,21.0,0.0,0.0,0.0,0.0,1.0,False,,2020,0.0,1.0,0.0,0.0,0.0,0.047619047619047616,1,False
|
||||
Rob Slotemaker,Netherlands,[1962],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Moisés Solana,Mexico,"[1963, 1964, 1965, 1966, 1967, 1968]",0.0,8.0,8.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,6,False
|
||||
Alex Soler-Roig,Spain,"[1970, 1971, 1972]",0.0,10.0,6.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.6,0.0,0.0,0.0,0.0,3,False
|
||||
Raymond Sommer,France,[1950],0.0,5.0,5.0,0.0,0.0,0.0,0.0,3.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.6,1,False
|
||||
Vincenzo Sospiri,Italy,[1997],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Stephen South,United Kingdom,[1980],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Mike Sparken,France,[1955],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Scott Speed,United States,"[2006, 2007]",0.0,28.0,28.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Mike Spence,United Kingdom,"[1963, 1964, 1965, 1966, 1967, 1968]",0.0,37.0,36.0,0.0,0.0,1.0,0.0,27.0,False,,1970,0.0,0.972972972972973,0.0,0.02702702702702703,0.0,0.7297297297297297,6,False
|
||||
Alan Stacey,United Kingdom,"[1958, 1959, 1960]",0.0,7.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Gaetano Starrabba,Italy,[1961],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Will Stevens,United Kingdom,"[2014, 2015]",0.0,20.0,18.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,0.9,0.0,0.0,0.0,0.0,2,False
|
||||
Chuck Stevenson,United States,"[1951, 1952, 1953, 1954, 1960]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,5,False
|
||||
Ian Stewart,United Kingdom,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jackie Stewart,United Kingdom,"[1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973]",3.0,100.0,99.0,17.0,27.0,43.0,15.0,359.0,False,"[1969, 1971, 1973]",1970,0.17,0.99,0.27,0.43,0.15,3.59,9,True
|
||||
Jimmy Stewart,United Kingdom,[1953],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Siegfried Stohr,Italy,[1981],0.0,13.0,9.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.6923076923076923,0.0,0.0,0.0,0.0,1,False
|
||||
Rolf Stommelen,West Germany,"[1970, 1971, 1972, 1973, 1974, 1975, 1976, 1978]",0.0,63.0,54.0,0.0,0.0,1.0,0.0,14.0,False,,1970,0.0,0.8571428571428571,0.0,0.015873015873015872,0.0,0.2222222222222222,8,False
|
||||
Philippe Streiff,France,"[1984, 1985, 1986, 1987, 1988]",0.0,54.0,53.0,0.0,0.0,1.0,0.0,11.0,False,,1990,0.0,0.9814814814814815,0.0,0.018518518518518517,0.0,0.2037037037037037,5,False
|
||||
Lance Stroll,Canada,"[2017, 2018, 2019, 2020, 2021, 2022]",0.0,124.0,123.0,1.0,0.0,3.0,0.0,202.0,True,,2020,0.008064516129032258,0.9919354838709677,0.0,0.024193548387096774,0.0,1.6290322580645162,6,False
|
||||
Hans Stuck,West Germany,"[1951, 1952, 1953]",0.0,5.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6,0.0,0.0,0.0,0.0,3,False
|
||||
Hans-Joachim Stuck,West Germany,"[1974, 1975, 1976, 1977, 1978, 1979]",0.0,81.0,74.0,0.0,0.0,2.0,0.0,29.0,False,,1980,0.0,0.9135802469135802,0.0,0.024691358024691357,0.0,0.35802469135802467,6,False
|
||||
Otto Stuppacher,Austria,[1976],0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Danny Sullivan,United States,[1983],0.0,15.0,15.0,0.0,0.0,0.0,0.0,2.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.13333333333333333,1,False
|
||||
Marc Surer,Switzerland,"[1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986]",0.0,88.0,82.0,0.0,0.0,0.0,1.0,17.0,False,,1980,0.0,0.9318181818181818,0.0,0.0,0.011363636363636364,0.19318181818181818,8,False
|
||||
John Surtees,United Kingdom,"[1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972]",1.0,113.0,111.0,8.0,6.0,24.0,10.0,180.0,False,[1964],1970,0.07079646017699115,0.9823008849557522,0.05309734513274336,0.21238938053097345,0.08849557522123894,1.592920353982301,13,True
|
||||
Andy Sutcliffe,United Kingdom,[1977],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Adrian Sutil,Germany,"[2007, 2008, 2009, 2010, 2011, 2013, 2014]",0.0,128.0,128.0,0.0,0.0,0.0,1.0,124.0,False,,2010,0.0,1.0,0.0,0.0,0.0078125,0.96875,7,False
|
||||
Len Sutton,United States,"[1958, 1959, 1960]",0.0,4.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.75,0.0,0.0,0.0,0.0,3,False
|
||||
Aguri Suzuki,Japan,"[1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995]",0.0,88.0,65.0,0.0,0.0,1.0,0.0,8.0,False,,1990,0.0,0.7386363636363636,0.0,0.011363636363636364,0.0,0.09090909090909091,8,False
|
||||
Toshio Suzuki,Japan,[1993],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jacques Swaters,Belgium,"[1951, 1953, 1954]",0.0,8.0,7.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.875,0.0,0.0,0.0,0.0,3,False
|
||||
Bob Sweikert,United States,"[1952, 1953, 1954, 1955, 1956]",0.0,7.0,5.0,0.0,1.0,1.0,0.0,8.0,False,,1950,0.0,0.7142857142857143,0.14285714285714285,0.14285714285714285,0.0,1.1428571428571428,5,False
|
||||
Toranosuke Takagi,Japan,"[1998, 1999]",0.0,32.0,32.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Noritake Takahara,Japan,"[1976, 1977]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Kunimitsu Takahashi,Japan,[1977],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Patrick Tambay,France,"[1977, 1978, 1979, 1981, 1982, 1983, 1984, 1985, 1986]",0.0,123.0,114.0,5.0,2.0,11.0,2.0,103.0,False,,1980,0.04065040650406504,0.926829268292683,0.016260162601626018,0.08943089430894309,0.016260162601626018,0.8373983739837398,9,False
|
||||
Luigi Taramazzo,Italy,[1958],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Gabriele Tarquini,Italy,"[1987, 1988, 1989, 1990, 1991, 1992, 1995]",0.0,79.0,38.0,0.0,0.0,0.0,0.0,1.0,False,,1990,0.0,0.4810126582278481,0.0,0.0,0.0,0.012658227848101266,7,False
|
||||
Piero Taruffi,Italy,"[1950, 1951, 1952, 1954, 1955, 1956]",0.0,19.0,18.0,0.0,1.0,5.0,1.0,41.0,False,,1950,0.0,0.9473684210526315,0.05263157894736842,0.2631578947368421,0.05263157894736842,2.1578947368421053,6,False
|
||||
Dennis Taylor,United Kingdom,[1959],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Henry Taylor,United Kingdom,"[1959, 1960, 1961]",0.0,11.0,8.0,0.0,0.0,0.0,0.0,3.0,False,,1960,0.0,0.7272727272727273,0.0,0.0,0.0,0.2727272727272727,3,False
|
||||
John Taylor,United Kingdom,"[1964, 1966]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,1.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.2,2,False
|
||||
Mike Taylor,United Kingdom,"[1959, 1960]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Trevor Taylor,United Kingdom,"[1959, 1961, 1962, 1963, 1964, 1966]",0.0,29.0,27.0,0.0,0.0,1.0,0.0,8.0,False,,1960,0.0,0.9310344827586207,0.0,0.034482758620689655,0.0,0.27586206896551724,6,False
|
||||
Marshall Teague,United States,"[1953, 1954, 1957]",0.0,5.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6,0.0,0.0,0.0,0.0,3,False
|
||||
Shorty Templeman,United States,"[1955, 1958, 1960]",0.0,5.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6,0.0,0.0,0.0,0.0,3,False
|
||||
Max de Terra,Switzerland,"[1952, 1953]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
André Testut,Monaco,"[1958, 1959]",0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
Mike Thackwell,New Zealand,"[1980, 1984]",0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.4,0.0,0.0,0.0,0.0,2,False
|
||||
Alfonso Thiele,United States,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Eric Thompson,United Kingdom,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,2.0,False,,1950,0.0,1.0,0.0,0.0,0.0,2.0,1,False
|
||||
Johnny Thomson,United States,"[1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960]",0.0,8.0,8.0,1.0,0.0,1.0,1.0,10.0,False,,1960,0.125,1.0,0.0,0.125,0.125,1.25,8,False
|
||||
Leslie Thorne,United Kingdom,[1954],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bud Tingelstad,United States,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Sam Tingle,Rhodesia,"[1963, 1965, 1967, 1968, 1969]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,5,False
|
||||
Desmond Titterington,United Kingdom,[1956],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Johnnie Tolan,United States,"[1956, 1957, 1958]",0.0,7.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.42857142857142855,0.0,0.0,0.0,0.0,3,False
|
||||
Alejandro de Tomaso,Argentina,"[1957, 1959]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Charles de Tornaco,Belgium,"[1952, 1953]",0.0,4.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Tony Trimmer,United Kingdom,"[1975, 1976, 1977, 1978]",0.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,4,False
|
||||
Maurice Trintignant,France,"[1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964]",0.0,84.0,82.0,0.0,2.0,10.0,1.0,72.33,False,,1960,0.0,0.9761904761904762,0.023809523809523808,0.11904761904761904,0.011904761904761904,0.8610714285714286,15,False
|
||||
Wolfgang von Trips,West Germany,"[1956, 1957, 1958, 1959, 1960, 1961]",0.0,29.0,27.0,1.0,2.0,6.0,0.0,56.0,False,,1960,0.034482758620689655,0.9310344827586207,0.06896551724137931,0.20689655172413793,0.0,1.9310344827586208,6,False
|
||||
Jarno Trulli,Italy,"[1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011]",0.0,256.0,252.0,4.0,1.0,11.0,1.0,246.5,False,,2000,0.015625,0.984375,0.00390625,0.04296875,0.00390625,0.962890625,15,False
|
||||
Yuki Tsunoda,Japan,"[2021, 2022]",0.0,45.0,43.0,0.0,0.0,0.0,0.0,44.0,True,,2020,0.0,0.9555555555555556,0.0,0.0,0.0,0.9777777777777777,2,False
|
||||
Esteban Tuero,Argentina,[1998],0.0,16.0,16.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Guy Tunmer,South Africa,[1975],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Jack Turner,United States,"[1956, 1957, 1958, 1959]",0.0,5.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8,0.0,0.0,0.0,0.0,4,False
|
||||
Toni Ulmen,West Germany,[1952],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Bobby Unser,United States,[1968],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Jerry Unser Jr.,United States,[1958],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Alberto Uria,Uruguay,"[1955, 1956]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Nino Vaccarella,Italy,"[1961, 1962, 1965]",0.0,5.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.8,0.0,0.0,0.0,0.0,3,False
|
||||
Stoffel Vandoorne,Belgium,"[2016, 2017, 2018]",0.0,42.0,41.0,0.0,0.0,0.0,0.0,26.0,False,,2020,0.0,0.9761904761904762,0.0,0.0,0.0,0.6190476190476191,3,False
|
||||
Bob Veith,United States,"[1956, 1957, 1958, 1959, 1960]",0.0,5.0,5.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,5,False
|
||||
Jean-Éric Vergne,France,"[2012, 2013, 2014]",0.0,58.0,58.0,0.0,0.0,0.0,0.0,51.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.8793103448275862,3,False
|
||||
Jos Verstappen,Netherlands,"[1994, 1995, 1996, 1997, 1998, 2000, 2001, 2003]",0.0,107.0,106.0,0.0,0.0,2.0,0.0,17.0,False,,2000,0.0,0.9906542056074766,0.0,0.018691588785046728,0.0,0.1588785046728972,8,False
|
||||
Max Verstappen,Netherlands,"[2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]",2.0,164.0,164.0,21.0,36.0,78.0,21.0,2036.5,True,"[2021, 2022]",2020,0.12804878048780488,1.0,0.21951219512195122,0.47560975609756095,0.12804878048780488,12.417682926829269,8,True
|
||||
Sebastian Vettel,Germany,"[2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]",4.0,300.0,299.0,57.0,53.0,122.0,38.0,3098.0,False,"[2010, 2011, 2012, 2013]",2010,0.19,0.9966666666666667,0.17666666666666667,0.4066666666666667,0.12666666666666668,10.326666666666666,16,True
|
||||
Gilles Villeneuve,Canada,"[1977, 1978, 1979, 1980, 1981, 1982]",0.0,68.0,67.0,2.0,6.0,13.0,8.0,101.0,False,,1980,0.029411764705882353,0.9852941176470589,0.08823529411764706,0.19117647058823528,0.11764705882352941,1.4852941176470589,6,False
|
||||
Jacques Villeneuve,Canada,"[1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006]",1.0,165.0,163.0,13.0,11.0,23.0,9.0,235.0,False,[1997],2000,0.07878787878787878,0.9878787878787879,0.06666666666666667,0.1393939393939394,0.05454545454545454,1.4242424242424243,11,True
|
||||
Jacques Villeneuve Sr.,Canada,"[1981, 1983]",0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,2,False
|
||||
Luigi Villoresi,Italy,"[1950, 1951, 1952, 1953, 1954, 1955, 1956]",0.0,34.0,31.0,0.0,0.0,8.0,1.0,46.0,False,,1950,0.0,0.9117647058823529,0.0,0.23529411764705882,0.029411764705882353,1.3529411764705883,7,False
|
||||
Emilio de Villota,Spain,"[1976, 1977, 1978, 1981, 1982]",0.0,15.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.13333333333333333,0.0,0.0,0.0,0.0,5,False
|
||||
Ottorino Volonterio,Switzerland,"[1954, 1956, 1957]",0.0,3.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Jo Vonlanthen,Switzerland,[1975],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Ernie de Vos,Canada,[1963],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Nyck de Vries,Netherlands,[2022],0.0,2.0,2.0,0.0,0.0,0.0,0.0,2.0,True,,2020,0.0,1.0,0.0,0.0,0.0,1.0,1,False
|
||||
Bill Vukovich,United States,"[1951, 1952, 1953, 1954, 1955]",0.0,6.0,5.0,1.0,2.0,2.0,3.0,19.0,False,,1950,0.16666666666666666,0.8333333333333334,0.3333333333333333,0.3333333333333333,0.5,3.1666666666666665,5,False
|
||||
Syd van der Vyver,South Africa,[1962],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Fred Wacker,United States,"[1953, 1954]",0.0,5.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.6,0.0,0.0,0.0,0.0,2,False
|
||||
David Walker,Australia,"[1971, 1972]",0.0,11.0,11.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Peter Walker,United Kingdom,"[1950, 1951, 1955]",0.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Lee Wallard,United States,"[1950, 1951]",0.0,3.0,2.0,0.0,1.0,1.0,1.0,9.0,False,,1950,0.0,0.6666666666666666,0.3333333333333333,0.3333333333333333,0.3333333333333333,3.0,2,False
|
||||
Heini Walter,Switzerland,[1962],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Rodger Ward,United States,"[1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963]",0.0,12.0,12.0,0.0,1.0,2.0,0.0,14.0,False,,1960,0.0,1.0,0.08333333333333333,0.16666666666666666,0.0,1.1666666666666667,11,False
|
||||
Derek Warwick,United Kingdom,"[1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1993]",0.0,162.0,147.0,0.0,0.0,4.0,2.0,71.0,False,,1990,0.0,0.9074074074074074,0.0,0.024691358024691357,0.012345679012345678,0.4382716049382716,11,False
|
||||
John Watson,United Kingdom,"[1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1985]",0.0,154.0,152.0,2.0,5.0,20.0,5.0,169.0,False,,1980,0.012987012987012988,0.987012987012987,0.032467532467532464,0.12987012987012986,0.032467532467532464,1.0974025974025974,12,False
|
||||
Spider Webb,United States,"[1950, 1952, 1953, 1954]",0.0,5.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,0.8,0.0,0.0,0.0,0.0,4,False
|
||||
Mark Webber,Australia,"[2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013]",0.0,217.0,215.0,13.0,9.0,42.0,19.0,1047.5,False,,2010,0.059907834101382486,0.9907834101382489,0.041474654377880185,0.1935483870967742,0.08755760368663594,4.8271889400921655,12,False
|
||||
Pascal Wehrlein,Germany,"[2016, 2017]",0.0,40.0,39.0,0.0,0.0,0.0,0.0,6.0,False,,2020,0.0,0.975,0.0,0.0,0.0,0.15,2,False
|
||||
Volker Weidler,West Germany,[1989],0.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Wayne Weiler,United States,[1960],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Karl Wendlinger,Austria,"[1991, 1992, 1993, 1994, 1995]",0.0,42.0,41.0,0.0,0.0,0.0,0.0,14.0,False,,1990,0.0,0.9761904761904762,0.0,0.0,0.0,0.3333333333333333,5,False
|
||||
Peter Westbury,United Kingdom,[1970],0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Chuck Weyant,United States,"[1955, 1957, 1958, 1959]",0.0,6.0,4.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.6666666666666666,0.0,0.0,0.0,0.0,4,False
|
||||
Ken Wharton,United Kingdom,"[1952, 1953, 1954, 1955]",0.0,16.0,15.0,0.0,0.0,0.0,0.0,3.0,False,,1950,0.0,0.9375,0.0,0.0,0.0,0.1875,4,False
|
||||
Ted Whiteaway,United Kingdom,[1955],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Graham Whitehead,United Kingdom,[1952],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Peter Whitehead,United Kingdom,"[1950, 1951, 1952, 1953, 1954]",0.0,12.0,10.0,0.0,0.0,1.0,0.0,4.0,False,,1950,0.0,0.8333333333333334,0.0,0.08333333333333333,0.0,0.3333333333333333,5,False
|
||||
Bill Whitehouse,United Kingdom,[1954],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1950,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Robin Widdows,United Kingdom,[1968],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Eppie Wietzes,Canada,"[1967, 1974]",0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,2,False
|
||||
Mike Wilds,United Kingdom,"[1974, 1975, 1976]",0.0,8.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.375,0.0,0.0,0.0,0.0,3,False
|
||||
Jonathan Williams,United Kingdom,[1967],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Roger Williamson,United Kingdom,[1973],0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1970,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Dempsey Wilson,United States,"[1958, 1960]",0.0,5.0,2.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.4,0.0,0.0,0.0,0.0,2,False
|
||||
Desiré Wilson,South Africa,[1980],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Justin Wilson,United Kingdom,[2003],0.0,16.0,16.0,0.0,0.0,0.0,0.0,1.0,False,,2000,0.0,1.0,0.0,0.0,0.0,0.0625,1,False
|
||||
Vic Wilson,United Kingdom,"[1960, 1966]",0.0,2.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,1960,0.0,0.5,0.0,0.0,0.0,0.0,2,False
|
||||
Joachim Winkelhock,West Germany,[1989],0.0,7.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1990,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Manfred Winkelhock,West Germany,"[1980, 1982, 1983, 1984, 1985]",0.0,56.0,47.0,0.0,0.0,0.0,0.0,2.0,False,,1980,0.0,0.8392857142857143,0.0,0.0,0.0,0.03571428571428571,5,False
|
||||
Markus Winkelhock,Germany,[2007],0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,1,False
|
||||
Reine Wisell,Sweden,"[1970, 1971, 1972, 1973, 1974]",0.0,23.0,22.0,0.0,0.0,1.0,0.0,13.0,False,,1970,0.0,0.9565217391304348,0.0,0.043478260869565216,0.0,0.5652173913043478,5,False
|
||||
Roelof Wunderink,Netherlands,[1975],0.0,6.0,3.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.5,0.0,0.0,0.0,0.0,1,False
|
||||
Alexander Wurz,Austria,"[1997, 1998, 1999, 2000, 2005, 2007]",0.0,69.0,69.0,0.0,0.0,3.0,1.0,45.0,False,,2000,0.0,1.0,0.0,0.043478260869565216,0.014492753623188406,0.6521739130434783,6,False
|
||||
Sakon Yamamoto,Japan,"[2006, 2007, 2010]",0.0,21.0,21.0,0.0,0.0,0.0,0.0,0.0,False,,2010,0.0,1.0,0.0,0.0,0.0,0.0,3,False
|
||||
Alex Yoong,Malaysia,"[2001, 2002]",0.0,18.0,14.0,0.0,0.0,0.0,0.0,0.0,False,,2000,0.0,0.7777777777777778,0.0,0.0,0.0,0.0,2,False
|
||||
Alessandro Zanardi,Italy,"[1991, 1992, 1993, 1994, 1999]",0.0,44.0,41.0,0.0,0.0,0.0,0.0,1.0,False,,1990,0.0,0.9318181818181818,0.0,0.0,0.0,0.022727272727272728,5,False
|
||||
Emilio Zapico,Spain,[1976],0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.0,0.0,0.0,0.0,0.0,1,False
|
||||
Zhou Guanyu,China,[2022],0.0,23.0,23.0,0.0,0.0,0.0,2.0,6.0,True,,2020,0.0,1.0,0.0,0.0,0.08695652173913043,0.2608695652173913,1,False
|
||||
Ricardo Zonta,Brazil,"[1999, 2000, 2001, 2004, 2005]",0.0,37.0,36.0,0.0,0.0,0.0,0.0,3.0,False,,2000,0.0,0.972972972972973,0.0,0.0,0.0,0.08108108108108109,5,False
|
||||
Renzo Zorzi,Italy,"[1975, 1976, 1977]",0.0,7.0,7.0,0.0,0.0,0.0,0.0,1.0,False,,1980,0.0,1.0,0.0,0.0,0.0,0.14285714285714285,3,False
|
||||
Ricardo Zunino,Argentina,"[1979, 1980, 1981]",0.0,11.0,10.0,0.0,0.0,0.0,0.0,0.0,False,,1980,0.0,0.9090909090909091,0.0,0.0,0.0,0.0,3,False
|
||||
|
21
ilbekov_dmitriy_lab_3/README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Лабораторная работа 3
|
||||
### Вариант 10
|
||||
|
||||
### Задание:
|
||||
- Используя данные из "F1DriversDataset.csv" решает задачу классификации (с помощью дерева решений), в которой по различным характеристикам требуется найти для "Количества чемпионских титулов" два наиболее важных признака из трех: Количество поулов, Количество побед, количество подиумов
|
||||
### Запуск
|
||||
- Запустить файл lab3.py
|
||||
|
||||
### Технологии
|
||||
- Язык - 'Python'
|
||||
- Библиотеки sklearn, numpy, pandas
|
||||
|
||||
### Что делает
|
||||
Программа вычисляет оценку важности каждого признака с помощью атрибута `feature_importances_` классификатора. Важность признаков сохраняется в переменной `scores`, а также вычисляет оценку качества классификатора на тестовых данных `X_test` и `Y_test` с помощью метода `score`
|
||||
|
||||
### Пример работы
|
||||
Пример работы представлен в виде скриншота:
|
||||
|
||||

|
||||
|
||||
Наиболее важным признаком оказалось количество подиумов гонщика
|
||||
BIN
ilbekov_dmitriy_lab_3/console.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
26
ilbekov_dmitriy_lab_3/lab3.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
pd.options.mode.chained_assignment = None
|
||||
|
||||
path = "F1DriversDataset.csv"
|
||||
required = ['Pole_Positions', 'Race_Wins', 'Podiums']
|
||||
target = 'Championships'
|
||||
|
||||
data = pd.read_csv(path)
|
||||
X = data[required]
|
||||
y = data[target]
|
||||
|
||||
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.1, random_state=42)
|
||||
|
||||
classifier_tree = DecisionTreeClassifier(random_state=42)
|
||||
classifier_tree.fit(X_train, Y_train)
|
||||
|
||||
feature_names = required
|
||||
embarked_score = classifier_tree.feature_importances_[-3:].sum()
|
||||
scores = np.append(classifier_tree.feature_importances_[:2], embarked_score)
|
||||
scores = map(lambda score: round(score, 2), scores)
|
||||
print(dict(zip(feature_names, scores)))
|
||||
print("Оценка качества: ", classifier_tree.score(X_test, Y_test))
|
||||
41
kurmyza_pavel_lab_1/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Лабораторная работа №1
|
||||
|
||||
## ПИбд-41, Курмыза Павел, Вариант 13
|
||||
|
||||
### Данные:
|
||||
|
||||
- make_moons (noise=0.3, random_state=rs)
|
||||
|
||||
### Модели:
|
||||
|
||||
- Линейную регрессию
|
||||
- Полиномиальную регрессию (со степенью 3)
|
||||
- Многослойный персептрон со 100-а нейронами в скрытом слое (alpha = 0.01)
|
||||
|
||||
## Как запустить ЛР
|
||||
|
||||
- Запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
|
||||
- Язык программирования Python
|
||||
- Библиотеки: sklearn, matplotlib, numpy
|
||||
|
||||
## Что делает программа
|
||||
|
||||
После генерации набора данных с помощью функции make_moons(), программа создает графики для моделей, которые указаны в
|
||||
задании. Затем она выводит в консоль качество данных для этих моделей.
|
||||
|
||||
## Тесты
|
||||
|
||||
### Консоль
|
||||
|
||||

|
||||
|
||||
### Графики
|
||||
|
||||

|
||||
|
||||
### Вывод
|
||||
|
||||
Исходя из этого, можно сделать вывод: лучший результат показала модель многослойного персептрона на 100 нейронах.
|
||||
BIN
kurmyza_pavel_lab_1/console_output.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
91
kurmyza_pavel_lab_1/main.py
Normal file
@@ -0,0 +1,91 @@
|
||||
from random import randrange
|
||||
import numpy as np
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.metrics import accuracy_score, mean_squared_error
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.datasets import make_moons
|
||||
from sklearn.pipeline import make_pipeline
|
||||
|
||||
RANDOM_STATE = randrange(50)
|
||||
|
||||
# Генерация случайных данных на основе случайного состояния
|
||||
|
||||
X, y = make_moons(noise=0.3, random_state=RANDOM_STATE)
|
||||
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=RANDOM_STATE)
|
||||
|
||||
# Полиномиальная регрессия (3 степень)
|
||||
|
||||
DEGREE = 3
|
||||
|
||||
poly_regression = make_pipeline(PolynomialFeatures(degree=DEGREE), LinearRegression()) # создание модели
|
||||
poly_regression.fit(X_train, y_train) # обучение
|
||||
y_pred_poly_regression = poly_regression.predict(X_test) # предсказание
|
||||
|
||||
# Линейная регрессия
|
||||
|
||||
linear_regression = LinearRegression() # создание модели
|
||||
linear_regression.fit(X_train, y_train) # обучение
|
||||
y_pred_linear_regression = linear_regression.predict(X_test) # предсказание
|
||||
|
||||
# Многослойный персептрон (100 нейронов)
|
||||
|
||||
HIDDEN_LAYER_SIZES = 100
|
||||
ALPHA = 0.01
|
||||
|
||||
perceptron_100 = MLPClassifier(hidden_layer_sizes=(HIDDEN_LAYER_SIZES,), alpha=ALPHA,
|
||||
random_state=RANDOM_STATE) # создание модели
|
||||
perceptron_100.fit(X_train, y_train) # обучение
|
||||
y_pred_perceptron_100 = perceptron_100.predict(X_test) # предсказание
|
||||
|
||||
# Оценка точности и вывод в консоль
|
||||
|
||||
acc_linear_regression = mean_squared_error(y_test, y_pred_linear_regression)
|
||||
acc_poly_regression = mean_squared_error(y_test, y_pred_poly_regression)
|
||||
acc_perceptron_100 = accuracy_score(y_test, y_pred_perceptron_100)
|
||||
|
||||
print(f"Оценка точности: "
|
||||
f"\n Линейная регрессия: {acc_linear_regression}"
|
||||
f"\n Полиномиальная регрессия (3 степень): {acc_poly_regression}"
|
||||
f"\n Многослойный персептрон (100 нейронов): {acc_perceptron_100}")
|
||||
|
||||
# Предсказание классов для точек графика для их визуализации
|
||||
|
||||
x_min, y_min = X[:, 0].min() - 0.5, X[:, 1].min() - 0.5
|
||||
x_max, y_max = X[:, 0].max() + 0.5, X[:, 1].max() + 0.5
|
||||
|
||||
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))
|
||||
|
||||
prediction_data = np.c_[xx.ravel(), yy.ravel()]
|
||||
|
||||
Z_poly_regression = poly_regression.predict(prediction_data)
|
||||
Z_poly_regression = Z_poly_regression.reshape(xx.shape)
|
||||
|
||||
Z_linear_regression = linear_regression.predict(prediction_data)
|
||||
Z_linear_regression = Z_linear_regression.reshape(xx.shape)
|
||||
|
||||
Z_perceptron_100 = perceptron_100.predict(prediction_data)
|
||||
Z_perceptron_100 = Z_perceptron_100.reshape(xx.shape)
|
||||
|
||||
|
||||
# Отрисовка графиков
|
||||
|
||||
def draw_graphic(title, nrows, ncols, index, Z):
|
||||
plt.subplot(nrows, ncols, index)
|
||||
plt.contourf(xx, yy, Z, alpha=0.8)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, alpha=0.6)
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train)
|
||||
plt.title(title)
|
||||
plt.xlabel('1 признак')
|
||||
plt.ylabel('2 признак')
|
||||
|
||||
|
||||
draw_graphic('Линейная регрессия', 1, 3, 1, Z_linear_regression)
|
||||
draw_graphic('Полиномиальная регрессия', 1, 3, 2, Z_poly_regression)
|
||||
draw_graphic('Персептрон', 1, 3, 3, Z_perceptron_100)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
BIN
kurmyza_pavel_lab_1/plots.jpg
Normal file
|
After Width: | Height: | Size: 102 KiB |
59
kurmyza_pavel_lab_2/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Лабораторная работа №2
|
||||
|
||||
## ПИбд-41, Курмыза Павел, Вариант 13
|
||||
|
||||
## Как запустить ЛР
|
||||
|
||||
- Запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
|
||||
- Язык программирования Python
|
||||
- Библиотеки: sklearn, numpy
|
||||
|
||||
## Что делает программа
|
||||
|
||||
Выполняет ранжирование 14 признаков для регрессионной проблемы Фридмана с помощью моделей:
|
||||
|
||||
- Рекурсивное сокращение признаков (Recursive Feature Elimination – RFE)
|
||||
- Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
- Линейная корреляция (f_regression)
|
||||
|
||||
Отображение получившихся результатов: 4 самых важных признака по среднему значению, значения признаков для каждой
|
||||
модели.
|
||||
|
||||
## Результаты
|
||||
|
||||
### RFE
|
||||
|
||||
{'x1': 1.0, 'x2': 1.0, 'x3': 1.0, 'x4': 1.0, 'x5': 1.0, 'x11': 1.0, 'x13': 1.0, 'x12': 0.86, 'x14': 0.71, 'x8': 0.57, '
|
||||
x6': 0.43, 'x10': 0.29, 'x7': 0.14, 'x9': 0.0}
|
||||
|
||||
### RFR
|
||||
|
||||
{'x14': 1.0, 'x2': 0.84, 'x4': 0.77, 'x1': 0.74, 'x11': 0.36, 'x12': 0.35, 'x5': 0.28, 'x3': 0.12, 'x13': 0.12, 'x6':
|
||||
0.01, 'x7': 0.01, 'x8': 0.01, 'x9': 0.01, 'x10': 0.0}
|
||||
|
||||
### f_regression
|
||||
|
||||
{'x4': 1.0, 'x14': 0.97, 'x2': 0.57, 'x12': 0.56, 'x1': 0.44, 'x11': 0.43, 'x5': 0.17, 'x8': 0.13, 'x7': 0.1, 'x9':
|
||||
0.08, 'x10': 0.05, 'x6': 0.04, 'x3': 0.01, 'x13': 0.0}
|
||||
|
||||
### Средние значения
|
||||
|
||||
{'x1': 0.33, 'x2': 0.33, 'x3': 0.33, 'x4': 0.33, 'x5': 0.33, 'x11': 0.33, 'x13': 0.33, 'x12': 0.29, 'x14': 0.24, 'x8':
|
||||
0.19, 'x6': 0.14, 'x10': 0.1, 'x7': 0.05, 'x9': 0.0}
|
||||
|
||||
## Вывод
|
||||
|
||||
По итогу тестирования было выявлено:
|
||||
|
||||
1. Модель рекурсивного сокращения признаков отдала предпочтение многим важным параметрам таким как x1, x2, x3, x4, x5,
|
||||
x11, x13, x12, x14.
|
||||
2. Модель сокращения признаков случайными деревьями выявила в качестве важных признаков x14, x2, x4, x1. Несмотря на то,
|
||||
что признак x3 не был выявлен, его влияние может быть учтено через скоррелированный параметр x14.
|
||||
3. Метод линейной корреляции (f_regression) сделал наилучшее взвешивание, отдав предпочтение прзинакам x4, x14, x2, x12.
|
||||
Несмотря на то, что признаки x1 и x3 не были выявлены, их влияние может быть учтено через скоррелированные параметры
|
||||
x12 и x14.
|
||||
|
||||
Согласно среднему значению, важными признаками являются: x1, x2, x3, x4, x5.
|
||||
94
kurmyza_pavel_lab_2/main.py
Normal file
@@ -0,0 +1,94 @@
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.feature_selection import RFE, f_regression
|
||||
import numpy as np
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
from operator import itemgetter
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
|
||||
|
||||
def rank_to_dict(ranks, names):
|
||||
ranks = np.abs(ranks)
|
||||
|
||||
minmax = MinMaxScaler()
|
||||
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(FEATURES_AMOUNT, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
|
||||
def flip_array(arr):
|
||||
return -1 * arr + np.max(arr)
|
||||
|
||||
|
||||
def sort_by_desc(dictionary):
|
||||
return dict(sorted(dictionary.items(), key=itemgetter(1), reverse=True))
|
||||
|
||||
|
||||
def calc_mean(ranks):
|
||||
mean = {}
|
||||
|
||||
for key, value in ranks.items():
|
||||
for item in value.items():
|
||||
if item[0] not in mean:
|
||||
mean[item[0]] = 0
|
||||
mean[item[0]] += item[1]
|
||||
|
||||
for key, value in mean.items():
|
||||
res = value / len(ranks)
|
||||
mean[key] = round(res, 2)
|
||||
|
||||
return sort_by_desc(mean)
|
||||
|
||||
|
||||
# Исходные данные составляют 750 строк-наблюдений и 14 столбцов-признаков
|
||||
|
||||
FEATURES_SIZE = 750
|
||||
FEATURES_AMOUNT = 14
|
||||
|
||||
# Генерация случайных исходных данных
|
||||
|
||||
np.random.seed(0)
|
||||
x = np.random.uniform(0, 1, (FEATURES_SIZE, 14))
|
||||
|
||||
# Создание функции-выхода (постановка регрессионной проблемы Фридмана) и добавление зависимости признаков
|
||||
|
||||
y = (10 * np.sin(np.pi * x[:, 0] * x[:, 1]) + 20 * (x[:, 2] - .5) ** 2 +
|
||||
10 * x[:, 3] + 5 * x[:, 4] ** 5 + np.random.normal(0, 1))
|
||||
|
||||
x[:, 10:] = x[:, :4] + np.random.normal(0, .025, (FEATURES_SIZE, 4))
|
||||
|
||||
# Создаём модель рекурсивного сокращения признаков на основе линейной модели и обучаем её
|
||||
|
||||
regression = LinearRegression()
|
||||
regression.fit(x, y)
|
||||
rfe = RFE(regression)
|
||||
rfe.fit(x, y)
|
||||
|
||||
# Создаём модель сокращения признаков случайными деревьями и обучаем её
|
||||
|
||||
rfr = RandomForestRegressor()
|
||||
rfr.fit(x, y)
|
||||
|
||||
# Создаём модель линейной корреляции и обучаем её
|
||||
|
||||
f, _ = f_regression(x, y, center=False)
|
||||
|
||||
# Аккумулируем наименования признаков
|
||||
|
||||
features_names = ["x%s" % i for i in range(1, FEATURES_AMOUNT + 1)]
|
||||
|
||||
# Собираем отображения значений каждого признака каждой моделью
|
||||
|
||||
features_ranks = {
|
||||
'RFE': sort_by_desc(rank_to_dict(flip_array(rfe.ranking_), features_names)),
|
||||
'RFR': sort_by_desc(rank_to_dict(rfr.feature_importances_, features_names)),
|
||||
'f_regression': sort_by_desc(rank_to_dict(f, features_names))
|
||||
}
|
||||
|
||||
# Подсчитываем среднюю оценку и выводим результаты
|
||||
|
||||
print(f"Результаты:"
|
||||
f"\n RFE \n{features_ranks['RFE']}"
|
||||
f"\n RFR \n{features_ranks['RFR']}"
|
||||
f"\n f_regression \n {features_ranks['f_regression']}"
|
||||
f"\n Средние значения \n{calc_mean(features_ranks)}")
|
||||
53
kurmyza_pavel_lab_5/README.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Лабораторная работа №5
|
||||
|
||||
## ПИбд-41, Курмыза Павел
|
||||
|
||||
Датасет по варианту: https://www.kaggle.com/datasets/jessemostipak/hotel-booking-demand.
|
||||
|
||||
Данный набор данных содержит информацию о бронировании городской и курортной гостиниц и включает в себя такие
|
||||
сведения, как время бронирования, продолжительность пребывания, количество взрослых, детей и/или младенцев, количество
|
||||
свободных парковочных мест и т.д.
|
||||
|
||||
## Как запустить ЛР
|
||||
|
||||
- Запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
|
||||
- Язык программирования Python
|
||||
- Библиотеки: sklearn, numpy, pandas
|
||||
|
||||
## Что делает программа
|
||||
|
||||
Программа решает задачу кластеризации на выбранном датасете: выделение наиболее прибыльных посетителей отелей на основе
|
||||
их времени прибывания и средней цены одной ночи пребывания в отели. Решение достигается в несколько этапов:
|
||||
|
||||
- Предобработка данных
|
||||
- Стандартизация данных и приведение их к виду, удобном для работы с моделями ML
|
||||
- Использование модели кластеризации K-средних
|
||||
- Визуализация полученных результатов и вывод
|
||||
|
||||
## Тестирование
|
||||
|
||||
Теперь мы рассмотрели задачу кластеризации K-средних, и проанализируем результаты каждого
|
||||
кластера, чтобы определить наиболее прибыльных клиентов в нашем наборе данных на основе времени выполнения заказа и ADR.
|
||||
Первая проблема, с которой мы сталкиваемся, когда хотим использовать кластеризацию с помощью K-средних, - это
|
||||
определение оптимального количества кластеров, которые мы хотим получить в качестве результатов. Поэтому сначала для
|
||||
определения количества кластеров мы использовали метод локтя:
|
||||
|
||||

|
||||
|
||||
Для определения оптимального количества кластеров необходимо выбрать значение k, после которого искажение начинает
|
||||
линейно уменьшаться. Таким образом, мы пришли к выводу, что оптимальное количество кластеров для данных равно 4. Поэтому
|
||||
мы запустили алгоритм K-средних на основе lead_time и ADR с количеством кластеров, равным 4, и вывели центры кластеров:
|
||||
|
||||

|
||||
|
||||
## Вывод
|
||||
|
||||
Наиболее прибыльными считаются клиенты с наименьшим временем пребывания и наибольшим ADR, т.е. клиенты, попавшие в
|
||||
зеленый кластер. В то время как красная категория показывает самый низкий ADR и самое высокое (наименее выгодное) время
|
||||
пребывания. В нашем случае после визуализации графика мы можем задать такие вопросы, как: почему у
|
||||
одних клиентов время пребывания меньше, чем у других? и есть ли вероятность, что клиенты в определенных странах
|
||||
соответствуют этому профилю? и т.д. На все эти вопросы алгоритм кластеризации K-средних может и не ответить напрямую,
|
||||
но сведение данных в отдельные кластеры обеспечивает надежную основу для постановки подобных вопросов.
|
||||
BIN
kurmyza_pavel_lab_5/centers.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
kurmyza_pavel_lab_5/clusters.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
119391
kurmyza_pavel_lab_5/hotel_bookings.csv
Normal file
81
kurmyza_pavel_lab_5/main.py
Normal file
@@ -0,0 +1,81 @@
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
import datetime as dt
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
import sklearn.cluster as cluster
|
||||
|
||||
# Чтение данных датасета
|
||||
df = pd.read_csv('hotel_bookings.csv')
|
||||
|
||||
# Удаление строк, содержащих отсутствующие значения
|
||||
df = df[df['children'].notna()]
|
||||
df = df[df['country'].notna()]
|
||||
|
||||
# Объединение столбцов 'arrival_date_year', 'arrival_date_month', 'arrival date day_of_month' в столбец
|
||||
# 'arrival_date', содержащий день, месяц и год приезда клиента в формате datetime
|
||||
df["arrival_date_month"] = pd.to_datetime(df['arrival_date_month'], format='%B').dt.month
|
||||
df["arrival_date"] = pd.to_datetime({"year": df["arrival_date_year"].values,
|
||||
"month": df["arrival_date_month"].values,
|
||||
"day": df["arrival_date_day_of_month"].values})
|
||||
df = df.drop(columns=['arrival_date_year', 'arrival_date_month', 'arrival_date_day_of_month'])
|
||||
|
||||
# Преобразование типа столбца reservation_status_date в datetime
|
||||
df["reservation_status_date"] = pd.to_datetime(df["reservation_status_date"], format='%Y-%m-%d')
|
||||
|
||||
# Заполнение нулевых значений в столбцах средним значением каждого столбца
|
||||
for column in ['agent', 'company', 'arrival_date']:
|
||||
df[column] = df[column].fillna(df[column].mean())
|
||||
|
||||
# Удаляем повторяющиеся значения
|
||||
df.drop_duplicates(inplace=True)
|
||||
|
||||
# Преобразование категориальных переменных в числовые переменные для того, чтобы модель могла с ними работать
|
||||
categoricalV = ["hotel", "meal", "country", "market_segment", "distribution_channel", "reserved_room_type",
|
||||
"assigned_room_type", "deposit_type", "customer_type"]
|
||||
df[categoricalV[1:11]] = df[categoricalV[1:11]].astype('category')
|
||||
|
||||
df[categoricalV[1:11]] = df[categoricalV[1:11]].apply(lambda x: LabelEncoder().fit_transform(x))
|
||||
|
||||
df['hotel_Num'] = LabelEncoder().fit_transform(df['hotel'])
|
||||
|
||||
df['numerical_larrival_date'] = df['arrival_date'].map(dt.datetime.toordinal)
|
||||
df['numerical_reservation_status_date'] = df['reservation_status_date'].map(dt.datetime.toordinal)
|
||||
|
||||
df["is_canceled"].replace({'not canceled': 0, 'canceled': 1}, inplace=True)
|
||||
df["reservation_status"].replace({'Canceled': 0, 'Check-Out': 1, 'No-Show': 2}, inplace=True)
|
||||
|
||||
# Определение входных и выходных значений
|
||||
usefull_columns = df.columns.difference(['hotel', 'hotel_Num', 'arrival_date', 'reservation_status_date'])
|
||||
X = df[usefull_columns]
|
||||
Y = df["hotel_Num"].astype(int)
|
||||
|
||||
# Деление данных на тестовую и обучающую выборки
|
||||
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=150)
|
||||
|
||||
# Определение оптимального количества кластеров
|
||||
df_Short = df[['lead_time', 'adr']]
|
||||
|
||||
K = range(1, 12)
|
||||
wss = []
|
||||
for k in K:
|
||||
kmeans = cluster.KMeans(n_clusters=k, init="k-means++")
|
||||
kmeans = kmeans.fit(df_Short)
|
||||
wss_iter = kmeans.inertia_
|
||||
wss.append(wss_iter)
|
||||
|
||||
mycenters = pd.DataFrame({'Clusters': K, 'WSS': wss})
|
||||
|
||||
sns.scatterplot(x='Clusters', y='WSS', data=mycenters, marker="+")
|
||||
|
||||
# Решение задачи кластеризации с использованием K-Means
|
||||
kmeans = cluster.KMeans(n_clusters=4, init="k-means++")
|
||||
kmeans = kmeans.fit(df[['lead_time', 'adr']])
|
||||
df['Clusters'] = kmeans.labels_
|
||||
|
||||
# Визуализируем кластеры
|
||||
sns.lmplot(x="lead_time", y="adr", hue='Clusters', data=df)
|
||||
plt.ylim(0, 600)
|
||||
plt.xlim(0, 800)
|
||||
plt.show()
|
||||
38
lipatov_ilya_lab_2/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
## Лабораторная работа №2
|
||||
|
||||
### Ранжирование признаков
|
||||
|
||||
## Выполнил студент группы ПИбд-41 Липатов Илья
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
|
||||
* установить python, numpy, matplotlib, sklearn
|
||||
* запустить проект (стартовая точка класс lab2)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
* Язык программирования `Python`, библиотеки numpy, matplotlib, sklearn
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает лабораторная работа:
|
||||
|
||||
* генерирует данные и обучает модели модели RandomizedLasso, Ridge,Random Forest Regressor.
|
||||
* ранжирует признаки с помощью моделей RandomizedLasso, Ridge,Random Forest Regressor.
|
||||
* отображает получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку.
|
||||
|
||||
### Примеры работы:
|
||||
|
||||
#### Результаты:
|
||||
* RandomizedLasso: 1, 2, 4, 5
|
||||
* Ridge: 4, 11, 12 и 1 или 2 (одинаковый результат)
|
||||
* Random Forest Regressor: 4, 1 11, 12
|
||||
|
||||
#### Среднее: 4, 1, 2 и 5 признаки
|
||||
|
||||
#### Графики результатов ранжирования признаков по каждой модели и средняя оценка:
|
||||
|
||||

|
||||
|
||||
#### Средние оценки для признаков у каждой модели и средние оценки моделей:
|
||||
|
||||

|
||||