import%20marimo%0A%0A__generated_with%20%3D%20%220.16.0%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20return%20mo%2C%20np%2C%20pd%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%20Module%201%20-%20%5BIntroduction%20to%20Machine%20Learning%5D(https%3A%2F%2Fgithub.com%2FDataTalksClub%2Fmachine-learning-zoomcamp%2Ftree%2Fmaster%2F01-intro)%0A%0A%20%20%20%20%23%23%20Homework%0A%0A%20%20%20%20%23%23%23%20Set%20up%20the%20environment%0A%0A%20%20%20%20You%20need%20to%20install%20Python%2C%20NumPy%2C%20Pandas%2C%20Matplotlib%20and%20Seaborn.%20For%20that%2C%20you%20can%20use%20the%20instructions%20from%0A%20%20%20%20%5B06-environment.md%5D(..%2F..%2F..%2F01-intro%2F06-environment.md).%0A%0A%20%20%20%20%23%23%23%20Q1.%20Pandas%20version%0A%0A%20%20%20%20What's%20the%20version%20of%20Pandas%20that%20you%20installed%3F%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(pd)%3A%0A%20%20%20%20pd.__version__%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Getting%20the%20data%20%0A%0A%20%20%20%20For%20this%20homework%2C%20we'll%20use%20the%20Car%20Fuel%20Efficiency%20dataset.%20Download%20it%20from%20%3Ca%20href%3D'https%3A%2F%2Fraw.githubusercontent.com%2Falexeygrigorev%2Fdatasets%2Fmaster%2Fcar_fuel_efficiency.csv'%3Ehere%3C%2Fa%3E.%0A%0A%20%20%20%20You%20can%20do%20it%20with%20wget%3A%0A%20%20%20%20%60%60%60bash%0A%20%20%20%20wget%20https%3A%2F%2Fraw.githubusercontent.com%2Falexeygrigorev%2Fdatasets%2Fmaster%2Fcar_fuel_efficiency.csv%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20Or%20just%20open%20it%20with%20your%20browser%20and%20click%20%22Save%20as...%22.%0A%0A%20%20%20%20Now%20read%20it%20with%20Pandas.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(pd)%3A%0A%20%20%20%20cars%20%3D%20pd.read_csv(%22.%2Fmodule-1%2Fdata%2Fcar_fuel_efficiency.csv%22)%0A%20%20%20%20return%20(cars%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Q2.%20Records%20count%0A%0A%20%20%20%20How%20many%20records%20are%20in%20the%20dataset%3F%0A%0A%20%20%20%20-%204704%0A%20%20%20%20-%208704%0A%20%20%20%20-%209704%0A%20%20%20%20-%2017704%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars)%3A%0A%20%20%20%20len(cars)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Q3.%20Fuel%20types%0A%0A%20%20%20%20How%20many%20fuel%20types%20are%20presented%20in%20the%20dataset%3F%0A%0A%20%20%20%20-%201%0A%20%20%20%20-%202%0A%20%20%20%20-%203%0A%20%20%20%20-%204%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars)%3A%0A%20%20%20%20cars.fuel_type.nunique()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Q4.%20Missing%20values%0A%0A%20%20%20%20How%20many%20columns%20in%20the%20dataset%20have%20missing%20values%3F%0A%0A%20%20%20%20-%200%0A%20%20%20%20-%201%0A%20%20%20%20-%202%0A%20%20%20%20-%203%0A%20%20%20%20-%204%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars)%3A%0A%20%20%20%20cars.isna().any().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Q5.%20Max%20fuel%20efficiency%0A%0A%20%20%20%20What's%20the%20maximum%20fuel%20efficiency%20of%20cars%20from%20Asia%3F%0A%0A%20%20%20%20-%2013.75%0A%20%20%20%20-%2023.75%0A%20%20%20%20-%2033.75%0A%20%20%20%20-%2043.75%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars)%3A%0A%20%20%20%20cars%5Bcars.origin%20%3D%3D%20%22Asia%22%5D.fuel_efficiency_mpg.max()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Q6.%20Median%20value%20of%20horsepower%0A%0A%20%20%20%201.%20Find%20the%20median%20value%20of%20%60horsepower%60%20column%20in%20the%20dataset.%0A%20%20%20%202.%20Next%2C%20calculate%20the%20most%20frequent%20value%20of%20the%20same%20%60horsepower%60%20column.%0A%20%20%20%203.%20Use%20%60fillna%60%20method%20to%20fill%20the%20missing%20values%20in%20%60horsepower%60%20column%20with%20the%20most%20frequent%20value%20from%20the%20previous%20step.%0A%20%20%20%204.%20Now%2C%20calculate%20the%20median%20value%20of%20%60horsepower%60%20once%20again.%0A%0A%20%20%20%20Has%20it%20changed%3F%0A%0A%20%20%20%20-%20Yes%2C%20it%20increased%0A%20%20%20%20-%20Yes%2C%20it%20decreased%0A%20%20%20%20-%20No%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars)%3A%0A%20%20%20%20%23%201.%20Find%20the%20median%20value%20of%20%60horsepower%60%20column%20in%20the%20dataset%0A%0A%20%20%20%20cars.horsepower.median()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars)%3A%0A%20%20%20%20%23%202.%20Next%2C%20calculate%20the%20most%20frequent%20value%20of%20the%20same%20horsepower%20column.%0A%0A%20%20%20%20horsepower_mode%20%3D%20int(cars.horsepower.mode().item())%0A%20%20%20%20horsepower_mode%0A%20%20%20%20return%20(horsepower_mode%2C)%0A%0A%0A%40app.cell%0Adef%20_(cars%2C%20horsepower_mode)%3A%0A%20%20%20%20%23%203.%20Use%20fillna%20method%20to%20fill%20the%20missing%20values%20in%20horsepower%20column%20with%20the%20most%20frequent%20value%20from%20the%20previous%20step.%0A%0A%20%20%20%20filled_horsepower%20%3D%20cars.copy()%0A%20%20%20%20filled_horsepower.horsepower%20%3D%20filled_horsepower.horsepower.fillna(horsepower_mode)%0A%20%20%20%20filled_horsepower.horsepower%0A%20%20%20%20return%20(filled_horsepower%2C)%0A%0A%0A%40app.cell%0Adef%20_(filled_horsepower)%3A%0A%20%20%20%20%23%204.%20Now%2C%20calculate%20the%20median%20value%20of%20horsepower%20once%20again.%0A%0A%20%20%20%20filled_horsepower.horsepower.median()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars%2C%20filled_horsepower)%3A%0A%20%20%20%20%23%20Has%20it%20changed%3F%0A%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22Yes%2C%20it%20increased%22%3A%20cars.horsepower.median()%20%3C%3D%20filled_horsepower.horsepower.median()%2C%0A%20%20%20%20%20%20%20%20%22Yes%2C%20it%20decreased%22%3A%20cars.horsepower.median()%20%3E%3D%20filled_horsepower.horsepower.median()%2C%0A%20%20%20%20%20%20%20%20%22No%22%3A%20cars.horsepower.median()%20%3D%3D%20filled_horsepower.horsepower.median()%0A%20%20%20%20%7D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Q7.%20Sum%20of%20weights%0A%0A%20%20%20%201.%20Select%20all%20the%20cars%20from%20Asia%0A%20%20%20%202.%20Select%20only%20columns%20%60vehicle_weight%60%20and%20%60model_year%60%0A%20%20%20%203.%20Select%20the%20first%207%20values%0A%20%20%20%204.%20Get%20the%20underlying%20NumPy%20array.%20Let's%20call%20it%20%60X%60.%0A%20%20%20%205.%20Compute%20matrix-matrix%20multiplication%20between%20the%20transpose%20of%20%60X%60%20and%20%60X%60.%20To%20get%20the%20transpose%2C%20use%20%60X.T%60.%20Let's%20call%20the%20result%20%60XTX%60.%0A%20%20%20%206.%20Invert%20%60XTX%60.%0A%20%20%20%207.%20Create%20an%20array%20%60y%60%20with%20values%20%60%5B1100%2C%201300%2C%20800%2C%20900%2C%201000%2C%201100%2C%201200%5D%60.%0A%20%20%20%208.%20Multiply%20the%20inverse%20of%20%60XTX%60%20with%20the%20transpose%20of%20%60X%60%2C%20and%20then%20multiply%20the%20result%20by%20%60y%60.%20Call%20the%20result%20%60w%60.%0A%20%20%20%209.%20What's%20the%20sum%20of%20all%20the%20elements%20of%20the%20result%3F%0A%0A%20%20%20%20%3E%20**Note**%3A%20You%20just%20implemented%20linear%20regression.%20We'll%20talk%20about%20it%20in%20the%20next%20lesson.%0A%0A%20%20%20%20-%200.051%0A%20%20%20%20-%200.51%0A%20%20%20%20-%205.1%0A%20%20%20%20-%2051%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars)%3A%0A%20%20%20%20%23%201.%20Select%20all%20the%20cars%20from%20Asia%0A%0A%20%20%20%20cars_from_asia%20%3D%20cars%5Bcars.origin%20%3D%3D%20%22Asia%22%5D%0A%20%20%20%20cars_from_asia%0A%20%20%20%20return%20(cars_from_asia%2C)%0A%0A%0A%40app.cell%0Adef%20_(cars_from_asia)%3A%0A%20%20%20%20%23%202.%20Select%20only%20columns%20vehicle_weight%20and%20model_year%0A%0A%20%20%20%20cars_from_asia%5B%5B%22vehicle_weight%22%2C%20%22model_year%22%5D%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars_from_asia)%3A%0A%20%20%20%20%23%203.%20Select%20the%20first%207%20values%0A%0A%20%20%20%20cars_from_asia%5B%5B%22vehicle_weight%22%2C%20%22model_year%22%5D%5D.head(7)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cars_from_asia)%3A%0A%20%20%20%20%23%204.%20Get%20the%20underlying%20NumPy%20array.%20Let's%20call%20it%20X%0A%0A%20%20%20%20X%20%3D%20cars_from_asia%5B%5B%22vehicle_weight%22%2C%20%22model_year%22%5D%5D.head(7).to_numpy()%0A%20%20%20%20X%0A%20%20%20%20return%20(X%2C)%0A%0A%0A%40app.cell%0Adef%20_(X)%3A%0A%20%20%20%20%23%205.%20Compute%20matrix-matrix%20multiplication%20between%20the%20transpose%20of%20X%20and%20X.%20To%20get%20the%20transpose%2C%20use%20X.T.%20Let's%20call%20the%20result%20XTX%0A%0A%20%20%20%20XTX%20%3D%20X.T.dot(X)%0A%20%20%20%20XTX%0A%20%20%20%20return%20(XTX%2C)%0A%0A%0A%40app.cell%0Adef%20_(XTX%2C%20np)%3A%0A%20%20%20%20%23%206.%20Invert%20XTX%0A%0A%20%20%20%20XTX_inv%20%3D%20np.linalg.inv(XTX)%0A%20%20%20%20XTX_inv%0A%20%20%20%20return%20(XTX_inv%2C)%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20%23%207.%20Create%20an%20array%20y%20with%20values%20%5B1100%2C%201300%2C%20800%2C%20900%2C%201000%2C%201100%2C%201200%5D%0A%0A%20%20%20%20y%20%3D%20np.array(%5B1100%2C%201300%2C%20800%2C%20900%2C%201000%2C%201100%2C%201200%5D)%0A%20%20%20%20y%0A%20%20%20%20return%20(y%2C)%0A%0A%0A%40app.cell%0Adef%20_(X%2C%20XTX_inv%2C%20y)%3A%0A%20%20%20%20%23%208.%20Multiply%20the%20inverse%20of%20XTX%20with%20the%20transpose%20of%20X%2C%20and%20then%20multiply%20the%20result%20by%20y.%20Call%20the%20result%20w%0A%0A%20%20%20%20w%20%3D%20XTX_inv.dot(X.T).dot(y)%0A%20%20%20%20w%0A%20%20%20%20return%20(w%2C)%0A%0A%0A%40app.cell%0Adef%20_(w)%3A%0A%20%20%20%20%23%209.%20What's%20the%20sum%20of%20all%20the%20elements%20of%20the%20result%3F%0A%0A%20%20%20%20w.sum()%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
69af6bea72a4cc376b6083ebe3b331d45d736cd68a00699e72d07d6985eb51f2