用Plotily处理数据的基本操作
import pandas as pd # 导入数据.scv df = pd.read_csv(" .csv") # 查看前五行数据 df.head() # 查看一下数据描述 df.descirbe() # 查看一下数据的形状 df.shape # 查看一下数据集中都包含哪些列 df.columns # 对数据进行可视化 import matplotlib.pyplot as plt import seaborn as sns # 使用Jupyter Notebook # import warnings # warnings.filterwarnings("ignore") # %matplotlib inline # 创建自定义图像 figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True) # 标题 plt.title(" ") # 画出数据分布图 sns.displot(df[" "]) # !pip install plotly # 安装Plotily库 # 导入绘图工具库 import plotly.offline as offline import plotly.graph_objs as go import plotly.offline as py from plotly.offline import init_notebook_mode, iplot init_notebook_mode(connected=True) offline.init_notebook_mode() # 查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值 temp = df[" "].value_counts() # 画出柱状图,查看不同值所占比重 trace = [go.Bar(x = temp.index, y = (temp / temp.sum()) * 100)] # 设置图的字体颜色等 layout = go.Layout( title=" ", xaxis=dict(title=' ', tickfont=dict(size= , color='rgb( , , )')), yaxis=dict(title=' ', titlefont=dict(size= , color='rgb( , , )'), tickfont=dict(size= , color='rgb( , , )')) ) # 显示图形 fig = go.Figure(data=trace, layout=layout) iplot(fig, filename=' ') # 画出饼状图 trace = [go.Pie(labels=temp.index, values=temp.values)] # 设置图题 layout = go.Layout( title=' ', ) # 显示图形 fig = go.Figure(data=trace, layout=layout) iplot(fig) # 画出饼状图,圆环型 trace = [go.Pie(labels=temp.index, values=temp.values, hole=0.6)] temp1 = df["FLAG_OWN_CAR"].value_counts() temp2 = df["FLAG_OWN_REALTY"].value_counts() # 画出两个饼状图 trace = [go.Pie(labels=temp1.index, values=temp1.values, domain={"x": [0, .48]}, hole=0.6), go.Pie(labels=temp2.index, values=temp2.values, domain={"x": [0.5, 1]}, hole=0.6)] # 设置图中的字体,图题等 layout = go.Layout( title=' ', annotations=[{"font": { "size": }, "showarrow": , "text": " ", "x": 0. , # 坐标 "y": 0. }, {"font": { "size": }, "showarrow": , "text": " ", "x": 0. , "y": 0. }]) # 显示图形 fig = go.Figure(data=trace, layout=layout) iplot(fig) # 计数方法 temp_y0 = [] temp_y1 = [] for val in temp.index: temp_y1.append(np.sum(df["TARGET"][df["TYPE"] == val] == 1)) temp_y0.append(np.sum(df["TARGET"][df["TYPE"] == val] == 0)) temp_y1 = np.array(temp_y1) temp_y0 = np.array(temp_y0) # 删除掉存在缺失值的特征列 df_drop = df.dropna(axis=1) df_drop.head() # 将其编码成为数值形式 from sklearn import preprocessing # 取出非数值的列 categorical_feats = [ f for f in df_drop.columns if df_drop[f].dtype == 'object' ] # 对非数值的列进行编码 for col in categorical_feats: lb = preprocessing.LabelEncoder() lb.fit(list(df_drop[col].values.astype('str'))) df_drop[col] = lb.transform(list(df_drop[col].values.astype('str'))) df_drop.head() # 划分数据 # 删除ID df_drop1 = df_drop.drop("ID", axis=1) # 提取训练特征数据和目标值 data_X = df_drop1.drop(" ", axis=1) data_y = df_drop1[' '] #划分数据集为训练数据集和测试数据集 from sklearn import model_selection train_x, test_x, train_y, test_y = model_selection.train_test_split(data_X.values, data_y.values, test_size=0.8, random_state=0) # 构建预测模型 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() # 构建模型 model.fit(train_x, train_y) # 训练模型 from sklearn import metrics y_pred = model.predict(test_x) # 预测测试集 metrics.accuracy_score(y_pred, test_y) # 评价预测结果 print(metrics.classification_report(y_pred, test_y)) features = data_X.columns.values # 取出数据集中的列名,即特征名 # 得到特征与其重要性 x, y = (list(x) for x in zip(*sorted(zip(model.feature_importances_, features), reverse=False))) # 画出柱状图 trace2 = go.Bar(x=x, y=y, marker=dict(color=x, colorscale='Viridis', reversescale=True), name=' ', orientation='h',) # 设置图题、字体等 layout = dict(title=' ', width=900, height=2000, yaxis=dict(showgrid=False, showline=False, showticklabels=True,), margin=dict(l=300,)) # 显示图形 fig1 = go.Figure(data=[trace2]) fig1['layout'].update(layout) iplot(fig1, filename='plots') from sklearn.tree import DecisionTreeClassifier from sklearn.neural_network import MLPClassifier from sklearn.ensemble import AdaBoostClassifier from sklearn.ensemble import BaggingClassifier from sklearn.ensemble import GradientBoostingClassifier from sklearn.linear_model import LogisticRegression # 构建 7 种算法 models = [LogisticRegression(solver='lbfgs'), # 逻辑回归 RandomForestClassifier(n_estimators=100), # 随机森林 DecisionTreeClassifier(), # 决策树 MLPClassifier(max_iter=100), # 多层感知机 AdaBoostClassifier(), # 自适应梯度提升 BaggingClassifier(), # 装袋算法 GradientBoostingClassifier()] # 梯度提升算法 model_name = ['LogisticRegression', 'RandomForestClassifier', "DecisionTreeClassifier", 'MLPClassifier', 'AdaBoostClassifier', 'BaggingClassifier', 'GradientBoostingClassifier'] acc = [] # 存放各算法的准确率 f1 = [] # 存放各算法的 f1 值 recall = [] # 存放各算法的召回率 for model in models: # 训练每个算法 model.fit(train_x, train_y) acc.append(model.score(test_x, test_y)) y_pred = model.predict(test_x) f1.append(metrics.f1_score(y_pred, test_y)) recall.append(metrics.recall_score(y_pred, test_y)) # 打印每种算法的评估结果 pd.DataFrame({"name": model_name, "acc": acc, "f1": f1, "recall": recall})
用Plotily处理数据的基本操作的更多相关文章
- MySQL:数据表基本操作
数据表基本操作 注意点: 1.数据表中已经有数据时,轻易修改数据类型,有可能因为不同的数据类型的数据在机器 中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据类型. 2. 数据表 ...
- MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作(转)
MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”. 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的 ...
- MySQL系列:数据表基本操作(2)
1. 指定数据库 mysql> use portal; 2. 数据库表基本操作 2.1 查看数据表 mysql> show tables; +------------------+ | T ...
- pandas学习(创建数据,基本操作)
pandas学习(一) Pandas基本数据结构 Series类型数据 Dataframe类型 基本操作 Pandas基本数据结构 两种常用数据结构: Series 一维数组,与Numpy中的一维ar ...
- MySQL 数据库、数据表、数据的基本操作
1.数据库(database)管理 1.1 create 创建数据库 create database firstDB; 1.2 show 查看所有数据库 mysql> show database ...
- ASP.NET的一般处理程序对数据的基本操作
TableList.ashx: <%@ WebHandler Language="C#" Class="TableList" %> using Sy ...
- mysql数据的基本操作
本文内容: 插入数据: 查询数据 修改数据 删除数据 首发日期:2018-04-11 插入数据: 给所有字段插入数据: 插入单条记录:insert into 表名 values(值列表); 插入多条记 ...
- MySQL开发——【数据的基本操作】
增加数据 基本语法: insert into 数据表 [字段名称1,字段名称2..] values (数据1,数据2...); 特别注意:针对数据类型整型.浮点型数据可以不加单引或双引号,但是如果字段 ...
- MySQL 5.6学习笔记(数据表基本操作)
1. 创建数据表 1.1 最基本的语法 CREATE TABLE tbl_name (col_name column_definition,...) [table_options] -column_d ...
随机推荐
- mac安装vue没有使用权限不足
➜ ~ vue init webpack frontend ⠋ downloading template /usr/local/lib/node_modules/vue-cli/node_modul ...
- 线程与进程 queue模块
queue模块的基本用法 https://www.cnblogs.com/chengd/articles/7778506.html 模块实现了3种类型的队列,区别在于队列中条目检索的顺序不同.在FIF ...
- centos6.7搭建局域网ntp服务器
修改/etc/ntp.conf文件 restrict xxx nomodify notrap nopeer noquery #xxx 此处配置本地IP地址restrict 12 ...
- linux下启动mysql提示:Timeout error occurred trying to start MySQL Daemon
启动 mysqld 时经过很长时间显示 Timeout error occurred trying to start MySQL Daemon. 终端进入 mysql 时显示 ERROR 2002 ( ...
- CodeForces - 748E Santa Claus and Tangerines(二分)
题意:将n个蛋糕分给k个人,要保证每个人都有蛋糕或蛋糕块,蛋糕可切, 1.若蛋糕值为偶数,那一次可切成对等的两块. 2.若蛋糕值为奇数,则切成的两块蛋糕其中一个比另一个蛋糕值多1. 3.若蛋糕值为1, ...
- 洛谷 P5664 Emiya 家今天的饭(84分)
题目传送门 解题思路: 对于每一个列c,f[i][j][k]表示到第i行,第c列选了j个,其它列一共选了k个,然后我们读题意发现只要j>k,那就一定是不合法的,然后统计所有方案,减去所有不合法方 ...
- h5-transform二维变换-盾牌还原案例
就是8张盾牌的拼图 1 <div class="transforms"> <img src="../img/dp1.png" alt=&quo ...
- VMware Workstation 12 PRo密钥
注意:手动输入(起初复制输入,一个都没成功,不要偷懒哦) VMware Workstation 12序列号: 5A02H-AU243-TZJ49-GTC7K-3C61N
- composer命令卡慢,使用国内源
执行composer install.update 和require的时候,遇到卡住不动的情况,可以切换到国内阿里云的源 composer config -g repo.packagist compo ...
- 文献阅读报告 - Social LSTM:Human Trajectory Prediction in Crowded Spaces
概览 简述 文献所提出的模型旨在解决交通中行人的轨迹预测(pedestrian trajectory prediction)问题,特别是在拥挤环境中--人与人交互(interaction)行为常有发生 ...