kaggle 房价预测 得分0.53492

ops/2024/10/19 21:29:56/

流程

  1. 导入需要的包
  2. 引入文件,查看内容
  3. 数据处理
  4. 调用模型准备训练
  5. 输出结果

导入需要的包

python">import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

引入文件,查看内容

python">train = pd.read_csv('train.csv')
print('The shape of training data:', train.shape)
train.head()

在这里插入图片描述

python">test = pd.read_csv('test.csv')
print('The shape of testing data:', test.shape)
test.head()

在这里插入图片描述

数据处理

删除没有用的列
python">train.drop('LotFrontage', axis=1, inplace=True)
test.drop('LotFrontage', axis=1, inplace=True)
区分数字特征和字符特征
python">#分离数字特征和类别特征
num_features = []
cate_features = []
for col in test.columns:if test[col].dtype == 'object':cate_features.append(col)else:num_features.append(col)
print('number of numeric features:', len(num_features))
print('number of categorical features:', len(cate_features))
去除特殊的值
python">#处理掉右下的明显异常值
train = train.drop(train[(train['TotalBsmtSF']>6000) & (train['SalePrice']<200000)].index)
train = train.drop(train[(train['GrLivArea']>4000) & (train['SalePrice']<200000)].index)
查看训练集中各特征的数据缺失个数
python">print('The shape of training data:', train.shape)
train_missing = train.isnull().sum()
train_missing = train_missing.drop(train_missing[train_missing==0].index).sort_values(ascending=False)
train_missing
查看测试集中各特征的数据缺失个数
python">#查看测试集中各特征的数据缺失个数
print('The shape of testing data:', test.shape)
test_missing = test.isnull().sum()
test_missing = test_missing.drop(test_missing[test_missing==0].index).sort_values(ascending=False)
test_missing
根据特征说明文档,以下特征缺失代表没有,所以直接补充为’None’就可以了:
python">none_lists = ['PoolQC', 'MiscFeature', 'Alley', 'Fence', 'FireplaceQu', 'GarageType', 'GarageFinish', 'GarageQual', 'GarageCond', 'BsmtFinType1','BsmtFinType2', 'BsmtCond', 'BsmtExposure', 'BsmtQual', 'MasVnrType']
for col in none_lists:train[col] = train[col].fillna('None')test[col] = test[col].fillna('None')
补充出现频率最高的一类
python">most_lists = ['MSZoning', 'Exterior1st', 'Exterior2nd', 'SaleType', 'KitchenQual', 'Electrical']
for col in most_lists:train[col] = train[col].fillna(train[col].mode()[0])test[col] = test[col].fillna(train[col].mode()[0])    #注意这里补充的是训练集中出现最多的类别
删除掉多余的特征
python">train['Functional'] = train['Functional'].fillna('Typ')
test['Functional'] = test['Functional'].fillna('Typ')train.drop('Utilities', axis=1, inplace=True)
test.drop('Utilities', axis=1, inplace=True)
数字特征处理
补零,对可能为零的特征,缺失值全部补零
python">zero_lists = ['GarageYrBlt', 'MasVnrArea', 'BsmtFullBath', 'BsmtHalfBath', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'GarageCars', 'GarageArea','TotalBsmtSF']
for col in zero_lists:train[col] = train[col].fillna(0)test[col] = test[col].fillna(0)
最后检查下是否还存在缺失值:

查看训练集是否有空

python">train.isnull().sum().any()

查看测试集是否有空

python">test.isnull().sum().any()
从存放类别特征的列表去掉
python">#从存放类别特征的列表去掉'Utilities'
cate_features.remove('Utilities')
print('The number of categorical features:', len(cate_features))
python">from sklearn.preprocessing import LabelEncoder
for col in cate_features:train[col] = train[col].astype(str)test[col] = test[col].astype(str)
le_features = ['Street', 'Alley', 'LotShape', 'LandContour', 'LandSlope', 'HouseStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'HeatingQC', 'CentralAir','KitchenQual', 'Functional', 'FireplaceQu', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence']
for col in le_features:encoder = LabelEncoder()value_train = set(train[col].unique())value_test = set(test[col].unique())value_list = list(value_train | value_test)encoder.fit(value_list)train[col] = encoder.transform(train[col])test[col] = encoder.transform(test[col])
把数据放一块处理
python">all_data = pd.concat((train.drop('SalePrice', axis=1), test)).reset_index(drop=True)
all_data = pd.get_dummies(all_data, drop_first=True)  #注意独热编码生成的时候要去掉一个维度,保证剩下的变量都是相互独立的
all_data.shape
划分数据集
python">trainset = all_data[:1460]
traincy = pd.read_csv('train.csv')
y=traincy['SalePrice']
testset = all_data[1458:]
print('The shape of training data:', trainset.shape)
print('The shape of testing data:', testset.shape)

调用模型

python">linear_model = LinearRegression()
linear_model.fit(trainset, y)
预测数据
python">line_pre = linear_model.predict(testset)

输出结果

python">test = pd.read_csv('test.csv')
# print(test.shape,line_pre.shape)
we = pd.DataFrame({'Id': test['Id'], 'SalePrice': line_pre})
we.to_csv('House_Price_submissionMyself.csv', index=False)

http://www.ppmy.cn/ops/5634.html

相关文章

vscode远程ubuntu16安装失败

vscode1.85版本之后不支持ubuntu16了&#xff0c;需要的同学&#xff0c;可下载1.85便携版使用。https://github.com/microsoft/vscode/issues/203967#issuecomment-1923440629 下载地址&#xff1a;https://vscode.download.prss.microsoft.com/dbazure/download/stable/8b377…

使用rsync建立MySQL从节点

使用场景&#xff1a;MySQL主节点存储较大&#xff0c;使用xtrabackup会遇到异常的情况 前置条件&#xff1a;node-01 与 node-02 做过ssh互信&#xff0c;rsync客户端均已安装&#xff0c;主节点开启binlog node-01 原主节点&#xff0c;数据存放目录为 /var/lib/mysql node-0…

kubebuilder(1)开发环境搭建

开发一个k8s operator,当然可以在官方原生的controller-runtime 项目上从头构建&#xff0c;但是比较复杂。现在一般基于operator脚手架进行开发。目前最流行的的脚手架是Kubebuilder 或 OperatorSDK。Kubebuilder 或 OperatorSDK都是对controller-runtime 项目进行了上层的封装…

【c++游戏】噩梦轮盘赌(俄罗斯转盘)

源代码 #include<bits/stdc.h> #include<time.h> #include<windows.h> using namespace std; // int hp3; int emhp3; // int b; int dantang[6]; int emhh; int shidan0; int kondan0; int zdzt0;int how; bool awa(){srand(time(NULL));if (shidan0){ret…

postman汉化

一、postman历史版本下载&#xff1a;Postman 10.24.16 Download for Windows / Old Versions / FileHorse.comhttps://www.filehorse.com/download-postman/old-versions/ 二、汉化包下载&#xff1a; Releases hlmd/Postman-cn GitHubPostman汉化中文版. Contribute to h…

数据结构——堆

目录 前言 一、堆的概念及结构 二、堆的实现 2.1 堆初始化 2.2 堆的销毁 2.3 交换数据 2.4 插入数据(插入到堆尾) 2.5 向上调整 2.6 堆的删除(删除堆顶元素) 2.7 向下调整 2.8 取堆顶 2.9 判空 完整代码 三、堆的创建 1.向上调整建堆 2.向下调整建堆 四、堆的…

Matlab|含sop的配电网重构(含风光|可多时段拓展)

目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 之前分享了很多配电网重构的程序&#xff0c;每个程序针对场景限定性比较大&#xff0c;程序初学者修改起来难度较大&#xff0c;本次分享一个基础程序&#xff0c;针对含sop的配电网重构模型&#xff0c;含风电和光伏&am…

部署轻量级Gitea替代GitLab进行版本控制(一)

Gitea 是一款使用 Golang 编写的可自运营的代码管理工具。 Gitea Official Website gitea: Gitea的首要目标是创建一个极易安装&#xff0c;运行非常快速&#xff0c;安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言&#xff0c;这使我们只要生成一个可执行程序即…