使用Python进行钻石价格分析

news2024/11/26 8:55:53

钻石是最昂贵的宝石之一。钻石的质量通常以其重量(克拉)、净度、颜色和切工来评估。重量越大、净度越高、色彩纯净、切工精细的钻石价格也越高。其中,4C标准是衡量钻石质量的国际标准,即克拉(Carat)、净度(Clarity)、颜色(Color)和切工(Cut)。

钻石价格分析

为了根据钻石的属性来分析钻石的价格,我们首先需要一个包含钻石价格的数据集。
这里有一个Kaggle上数据集地址:https://www.kaggle.com/datasets/shivam2503/diamonds,其中包含有关钻石的信息,例如:

  1. Carat
  2. Cut
  3. Colour
  4. Clarity
  5. Depth
  6. Table
  7. Price
  8. Size

导入必要的Python库和数据集:

import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go

data = pd.read_csv("diamonds.csv")
print(data.head())

输出

   Unnamed: 0  carat      cut color clarity  depth  table  price     x     y  \
0           1   0.23    Ideal     E     SI2   61.5   55.0    326  3.95  3.98   
1           2   0.21  Premium     E     SI1   59.8   61.0    326  3.89  3.84   
2           3   0.23     Good     E     VS1   56.9   65.0    327  4.05  4.07   
3           4   0.29  Premium     I     VS2   62.4   58.0    334  4.20  4.23   
4           5   0.31     Good     J     SI2   63.3   58.0    335  4.34  4.35   

      z  
0  2.43  
1  2.31  
2  2.31  
3  2.63  
4  2.75  

此数据集包含未命名列。在进一步处理之前删除此列:

data = data.drop("Unnamed: 0",axis=1)

现在让我们开始分析钻石价格。先来分析一下克拉数和钻石价格之间的关系,看看克拉数是如何影响钻石价格的:

figure = px.scatter(data_frame = data, x="carat",
                    y="price", size="depth", 
                    color= "cut", trendline="ols")
figure.show()

在这里插入图片描述
我们可以看到克拉数和钻石价格之间的线性关系。这意味着克拉数越高,价格越高。

现在,通过计算钻石的大小(长度x宽度x高度)向该数据集添加一个新列:

data["size"] = data["x"] * data["y"] * data["z"]
print(data)

输出

       carat        cut color clarity  depth  table  price     x     y     z  \
0       0.23      Ideal     E     SI2   61.5   55.0    326  3.95  3.98  2.43   
1       0.21    Premium     E     SI1   59.8   61.0    326  3.89  3.84  2.31   
2       0.23       Good     E     VS1   56.9   65.0    327  4.05  4.07  2.31   
3       0.29    Premium     I     VS2   62.4   58.0    334  4.20  4.23  2.63   
4       0.31       Good     J     SI2   63.3   58.0    335  4.34  4.35  2.75   
...      ...        ...   ...     ...    ...    ...    ...   ...   ...   ...   
53935   0.72      Ideal     D     SI1   60.8   57.0   2757  5.75  5.76  3.50   
53936   0.72       Good     D     SI1   63.1   55.0   2757  5.69  5.75  3.61   
53937   0.70  Very Good     D     SI1   62.8   60.0   2757  5.66  5.68  3.56   
53938   0.86    Premium     H     SI2   61.0   58.0   2757  6.15  6.12  3.74   
53939   0.75      Ideal     D     SI2   62.2   55.0   2757  5.83  5.87  3.64   

             size  
0       38.202030  
1       34.505856  
2       38.076885  
3       46.724580  
4       51.917250  
...           ...  
53935  115.920000  
53936  118.110175  
53937  114.449728  
53938  140.766120  
53939  124.568444  

[53940 rows x 11 columns]

现在让我们来看看钻石的大小与其价格之间的关系:

figure = px.scatter(data_frame = data, x="size",
                    y="price", size="size", 
                    color= "cut", trendline="ols")
figure.show()

在这里插入图片描述
上图总结了钻石的两个特点:

  • 优质切工钻石比其他钻石相对较大
  • 所有类型的钻石的大小和它们的价格之间都有线性关系

现在让我们来看看所有类型的钻石的价格,根据它们的颜色:

fig = px.box(data, x="cut", 
             y="price", 
             color="color")
fig.show()

在这里插入图片描述
现在让我们来看看所有类型的钻石的价格,根据其净度:

fig = px.box(data, 
             x="cut", 
             y="price", 
             color="clarity")
fig.show()

在这里插入图片描述
现在让我们来看看钻石价格与数据集中其他特征之间的相关性:

correlation = data.corr()
print(correlation["price"].sort_values(ascending=False))

输出

price    1.000000
carat    0.921591
size     0.902385
x        0.884435
y        0.865421
z        0.861249
table    0.127134
depth   -0.010647
Name: price, dtype: float64

钻石价格预测

现在,将通过使用上述钻石价格分析中的所有必要信息来预测钻石价格。

在继续之前,转换切割列的值,因为钻石的切割类型是预测钻石价格的一个有价值的特征。要使用此列,我们需要将其分类值转换为数值。下面是我们如何将其转换为数字功能:

data["cut"] = data["cut"].map({"Ideal": 1, 
                               "Premium": 2, 
                               "Good": 3,
                               "Very Good": 4,
                               "Fair": 5})

现在,让我们将数据分为训练集和测试集:

#splitting data
from sklearn.model_selection import train_test_split
x = np.array(data[["carat", "cut", "size"]])
y = np.array(data[["price"]])

xtrain, xtest, ytrain, ytest = train_test_split(x, y, 
                                                test_size=0.10, 
                                                random_state=42)

训练一个机器学习模型来完成钻石价格预测的任务:

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(xtrain, ytrain)

下面是我们如何使用机器学习模型来预测钻石的价格:

print("Diamond Price Prediction")
a = float(input("Carat Size: "))
b = int(input("Cut Type (Ideal: 1, Premium: 2, Good: 3, Very Good: 4, Fair: 5): "))
c = float(input("Size: "))
features = np.array([[a, b, c]])
print("Predicted Diamond's Price = ", model.predict(features))

输出

Diamond Price Prediction
Carat Size: 0.60
Cut Type (Ideal: 1, Premium: 2, Good: 3, Very Good: 4, Fair: 5): 2
Size: 40
Predicted Diamond's Price =  [937.13946429]

总结

因此,这就是如何使用Python进行钻石价格分析和预测的任务。根据钻石价格分析,我们可以说优质钻石的价格和尺寸都高于其他类型的钻石。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1092884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java中将数组转换成字符串

方法1&#xff1a;使用StringBuilder拼接 基本类型和引用类型兼容 int[] arr {1,2,4,6,9};StringBuilder sb new StringBuilder();for (int i 0; i < arr.length ; i) {if (i!arr.length-1){sb.append(arr[i]",");}else {sb.append(arr[i]);}}System.out.prin…

面向对象特征【封装性】

文章目录 OOP封装性内聚&#xff08;Cohesion&#xff09;耦合&#xff08;Coupling&#xff09; 封装性的优势最佳实践实际应用示例 OOP 面向对象编程&#xff08;OOP&#xff09;是计算机科学中的一个核心范例&#xff0c;它的其中一个重要特征是封装性。封装性有助于提高代码…

“之江创客”跨境电商赛区决赛暨浙南新电商发展论坛圆满落幕

9月26日&#xff0c;由商务部中国国际电子商务中心指导&#xff0c;浙江省商务厅等十个部门主办&#xff0c;浙江省电子商务促进中心、温州市商务局、苍南县人民政府承办的“之江创客”2023全球电子商务创业创新大赛跨境电商赛区决赛暨浙南新电商发展论坛在苍南圆满落幕。浙江省…

快递查询方法分享:如何批量查询并筛选超时快递?

快递查询是我们在日常生活中经常需要进行的一项任务。然而&#xff0c;当我们需要同时查询多个快递单号的时候&#xff0c;手动一个一个输入单号进行查询无疑是一项十分耗时的工作。为了解决这个问题&#xff0c;今天给大家介绍一款名为“固乔快递查询助手”的神器。 固乔快递查…

gRPC之gRPC Gateway

1、gRPC Gateway etcd3 API全面升级为gRPC后&#xff0c;同时要提供REST API服务&#xff0c;维护两个版本的服务显然不太合理&#xff0c;所以 grpc-gateway 诞生了。通过protobuf的自定义option实现了一个网关&#xff0c;服务端同时开启gRPC和HTTP服务&#xff0c; HTTP服…

10月14日,每日信息差

今天是2023年10月14日&#xff0c;以下是为您准备的8条信息差 第一、中国石油摘得日本碳信用实货交易首单。据了解&#xff0c;日本交易所集团旗下的东京证券交易所11日宣布&#xff0c;交易二氧化碳排放量的“碳信用市场”正式开始运营 第二、前三季度全国铁路投产新线1402公…

解决git在window11操作很慢,占用很大cpu的问题

【git在window11操作很慢&#xff0c;占用很大cpu&#xff0c;最后也执行失败】 在谷歌输入&#xff1a;git very slow in window 11。通过下面链接终于找到了解决方案&#xff1a; https://www.reddit.com/r/vscode/comments/sulebx/slow_git_in_wsl_after_updating_to_window…

【算法优选】 前缀和专题——壹

文章目录 &#x1f60e;前言&#x1f384;[前缀和](https://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf?tpId230&tqId2021480&ru/exam/oj&qru/ta/dynamic-programming/question-ranking&sourceUrl/exam/oj?page1&tab%25E7%25AE%2597%2…

Go语言入门心法(一)

Go语言入门心法(一) Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 一: go语言中变量认知 go语言中变量的定义: &#xff08;要想飞|先会走&#xff09;||&#xff08;翻身仗|抹遗憾 &#xff09; |&#xff08;二八定律&#xff09;(先量变)|(再质变)||&#x…

JVM基础:初识JVM

IDE&#xff1a;IntelliJ IDEA 2022.1.3 x64 操作系统&#xff1a;win10 x64 位 家庭版 文章目录 一、JVM是什么&#xff1f;二、JVM有哪些功能&#xff1f;2.1 解释和运行2.2 内存管理2.3 即时编译 三、有哪些常见的JVM&#xff1f;3.1 常见JVM3.2 Java虚拟机规范3.3 HotSpot的…

工业网关它的功能是什么

随着工业4.0的到来&#xff0c;工业网关在工业自动化领域中的作用越来越重要。工业网关是一种连接不同工业设备的网络设备&#xff0c;它能够实现不同设备之间的通信和数据传输。本文将以HiWoo Box为例&#xff0c;介绍工业网关的主要功能和应用场景。 一、工业网关的主要功能…

推荐几款简单易用的协作化项目管理工具

您是否正在寻找一种有效且简单的项目管理工具来帮助您与团队成员协作?项目管理工具在当今的商业世界中已经变得必不可少&#xff0c;因为它们帮助团队保持组织和生产力。找到合适的工具是困难的&#xff0c;因为有太多的选择。有些工具是为特定类型的项目设计的&#xff0c;而…

zabbix触发器与动作

一、触发器&#xff08;Trigger&#xff09; 1、概念&#xff1a; 在 Zabbix 中&#xff0c;触发器用于监测 Zabbix 监控系统中的各种指标和条件&#xff0c;并在特定条件满足时触发警报。&#xff08;触发器用于定义监控项的报警阈值&#xff09; 2、触发器对象&#xff1a…

CCF CSP认证 历年题目自练Day31

题目一 试题编号&#xff1a; 202206-1 试题名称&#xff1a; 归一化处理 时间限制&#xff1a; 500ms 内存限制&#xff1a; 512.0MB 题目背景 在机器学习中&#xff0c;对数据进行归一化处理是一种常用的技术。 将数据从各种各样分布调整为平均值为 0、方差为 1的标准分布&a…

Windows服务器监控工具

随着Windows服务器成为大多数网络不可或缺的一部分&#xff0c;一些关键业务功能永远依赖于它们的正常运行时间。其可用性和性能受到打击可能会对这些功能产生不利影响&#xff0c;进而极大地影响收入。 由于这些情况&#xff0c;通过主动衡量其性能并使用有效的Windows服务器…

html进阶语法

html进阶 列表、表格、表单 目标&#xff1a;掌握嵌套关系标签的写法&#xff0c;使用列表标签布局网页 01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的…

21面向对象描述器

目录 1、什么是描述器&#xff1f; 1、原始的代码可以理解成为这样&#xff1a; 2、增加解释器可以改成如下&#xff0c;解释器就是集增删改查为一体的一个小的property 有一点需要注意的地方是&#xff1a;property里面内置的参数不是get_age()就是不用调用。 3、装饰器可…

【从零开始学习Redis | 第一篇】快速了解Redis

前言&#xff1a; 本篇对于Redis的讲解可以让我们简单的了解什么是Redis以及他的简单应用。主要还是因为我在学习苍穹外卖的时候&#xff0c;用到了这个知识点&#xff0c;而在平时的各种学习中&#xff0c;对于Redis的大名也是早有耳闻&#xff0c;因此今天来简单的介绍一下re…

基于动物迁徙优化的BP神经网络(分类应用) - 附代码

基于动物迁徙优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于动物迁徙优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.动物迁徙优化BP神经网络3.1 BP神经网络参数设置3.2 动物迁徙算法应用 4.测试结果…

推荐八个大学搜题软件和学习工具哪个好用且免费,一起对比看看

以下分享的软件提供了各种实用的功能&#xff0c;如数学公式计算、语文阅读辅助等&#xff0c;让大学生们在学习过程中更加高效和便利。 1.九超查题 这是一个老公众号了&#xff0c;我身边的很多朋友都在用&#xff0c;支持超新星、学习强国、知到、智慧树和各类专业网课题目…