赞
踩
大家好,给大家分享一下python案例分析,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
目录
如今,随着技术的进步,像机器学习等技术正在许多组织中得到大规模的应用。这些模型通常与一组预定义的数据点一起工作,以数据集的形式提供神码ai火车头伪原创网址。这些数据集包含了一个特定领域的过去/以前的信息。在将这些数据点送入模型之前,组织这些数据点是非常重要的。这就是我们使用数据分析的地方。如果反馈给机器学习模型的数据没有得到很好的组织,它就会给出错误的或不想要的输出。这可能会给组织带来重大损失。因此,利用适当的数据分析是非常重要的。
关于数据集:
在这个例子中,我们要使用的数据是关于汽车的。特别是包含关于二手车的各种信息数据点,如价格、颜色等。在这里我们需要明白,仅仅收集数据是不够的。原始数据是没有用的。在这里,数据分析在解开我们所需要的信息和获得对这些原始数据的新见解方面起着重要作用。
考虑一下这个场景,我们的朋友奥蒂斯想卖掉他的车。但他不知道他的车应该卖多少钱!他想使利润最大化,但他也希望它能以合理的价格卖给想拥有它的人。所以在这里,我们,作为一个数据科学家,我们可以帮助我们的朋友奥蒂斯。
让我们像数据科学家一样思考,明确定义他的一些问题。例如,是否有关于其他汽车的价格及其特点的数据?汽车的哪些特征会影响其价格?颜色?品牌?马力是否也会影响售价,或许,还有其他方面?
作为一个数据分析师或数据科学家,这些是我们可以开始思考的一些问题。为了回答这些问题,我们将需要一些数据。但这些数据是以原始形式存在的。因此,我们需要先对其进行分析。这些数据以.csv/.data的格式提供给我们
要下载本例中使用的文件,请点击这里。提供的文件是.data格式的。按照下面的过程,将.data文件转换为.csv文件。
将.数据文件转换为.csv的过程:
1.打开MS Excel
2.转到数据
3.选择来自文本
4.在逗号上打勾(只)。
5.以.csv格式保存到你的电脑上你想要的位置!
需要的模块:
安装这些软件包的步骤:
pip install numpy
import numpy
以下代码中使用的步骤(简短描述):
让我们开始分析数据。
第1步:导入所需的模块。
- # importing section
- import pandas as pd
- import numpy as np
- import matplotlib.pyplot as plt
- import seaborn as sns
- import scipy as sp
第二步:让我们检查一下数据集的前五个条目。
- # using the Csv file
- df = pd.read_csv('output.csv')
-
- # Checking the first 5 entries of dataset
- df.head()
输出:
第3步:为我们的数据集定义头文件。
- headers = ["symboling", "normalized-losses", "make",
- "fuel-type", "aspiration","num-of-doors",
- "body-style","drive-wheels", "engine-location",
- "wheel-base","length", "width","height", "curb-weight",
- "engine-type","num-of-cylinders", "engine-size",
- "fuel-system","bore","stroke", "compression-ratio",
- "horsepower", "peak-rpm","city-mpg","highway-mpg","price"]
-
- df.columns=headers
- df.head()
输出:
第4步:找到缺失的值(如果有)。
- data = df
-
- # Finding the missing values
- data.isna().any()
-
- # Finding if missing values
- data.isnull().any()
输出:
第4步:将mpg转换为L/100km,并检查每一列的数据类型。
- # converting mpg to L / 100km
- data['city-mpg'] = 235 / df['city-mpg']
- data.rename(columns = {'city_mpg': "city-L / 100km"}, inplace = True)
-
- print(data.columns)
-
- # checking the data type of each column
- data.dtypes
输出:
第5步:这里,价格是对象类型(字符串),它应该是int或float,所以我们需要改变它。
- data.price.unique()
-
- # Here it contains '?', so we Drop it
- data = data[data.price != '?']
-
- # checking it again
- data.dtypes
输出:
第6步:通过使用简单的特征缩放方法示例(为其余部分做的)和分组–对价值进行归一化处理。
- data['length'] = data['length']/data['length'].max()
- data['width'] = data['width']/data['width'].max()
- data['height'] = data['height']/data['height'].max()
-
- # binning- grouping values
- bins = np.linspace(min(data['price']), max(data['price']), 4)
- group_names = ['Low', 'Medium', 'High']
- data['price-binned'] = pd.cut(data['price'], bins,
- labels = group_names,
- include_lowest = True)
-
- print(data['price-binned'])
- plt.hist(data['price-binned'])
- plt.show()
输出:
第7步:对数据分类到数值做描述性分析。
- # categorical to numerical variables
- pd.get_dummies(data['fuel-type']).head()
-
- # deive analysis
- # NaN are skipped
- data.describe()
输出:
第8步:按照基于发动机尺寸的价格绘制数据。
- # examples of box plot
- plt.boxplot(data['price'])
-
- # by using seaborn
- sns.boxplot(x ='drive-wheels', y ='price', data = data)
-
- # Predicting price based on engine size
- # Known on x and predictable on y
- plt.scatter(data['engine-size'], data['price'])
- plt.title('Scatterplot of Enginesize vs Price')
- plt.xlabel('Engine size')
- plt.ylabel('Price')
- plt.grid()
- plt.show()
输出:
第9步:根据车轮、车身样式和价格对数据进行分组。
- # Grouping Data
- test = data[['drive-wheels', 'body-style', 'price']]
- data_grp = test.groupby(['drive-wheels', 'body-style'],
- as_index = False).mean()
-
- data_grp
输出:
步骤10:使用透视法,并根据透视法得到的数据绘制热图。
- # pivot method
- data_pivot = data_grp.pivot(index = 'drive-wheels',
- columns = 'body-style')
- data_pivot
-
- # heatmap for visualizing data
- plt.pcolor(data_pivot, cmap ='RdBu')
- plt.colorbar()
- plt.show()
输出:
第11步:获得最终结果,并以图表的形式显示出来。由于斜率是沿正方向增加的,所以是正的线性关系。
- # Analysis of Variance- ANOVA
- # returns f-test and p-value
- # f-test = variance between sample group means divided by
- # variation within sample group
- # p-value = confidence degree
- data_annova = data[['make', 'price']]
- grouped_annova = data_annova.groupby(['make'])
- annova_results_l = sp.stats.f_oneway(
- grouped_annova.get_group('honda')['price'],
- grouped_annova.get_group('subaru')['price']
- )
- print(annova_results_l)
-
- # strong corealtion between a categorical variable
- # if annova test gives large f-test and small p-value
-
- # Correlation- measures dependency, not causation
- sns.regplot(x ='engine-size', y ='price', data = data)
- plt.ylim(0, )
输出:
许多学科的艺术家都使用素描和绘画来保存想法、回忆和思想。从绘画和雕塑到参观艺术博物馆,体验艺术提供了各种健康优势,包括减少压力和提高批判性思维能力。特别是绘画、素描和油画,与提高创造力、记忆力和减轻压力有关,并被用于艺术治疗中。
通过这篇文章,我们现在可以建立一个网络应用,使用python框架Streamlit直接将图像转换成草图。用户可以上传一张图片,将其转换为水彩素描或铅笔素描。用户可以进一步下载转换后的图片,在此之前,让我们了解一些我们将在本文中使用的定义。
- pip install streamlit
- pip install opencv-python
- pip install numpy
- pip install Pillow
第1步:安装Streamlit
同样地,我们将安装PIL、Numpy和cv2。
第二步:测试安装是否成功。
streamlit hello
第3步:现在运行streamlit网络应用程序。我们需要键入以下命令
streamlit run app.py
第四步:现在,网络应用已经成功启动。你可以通过本地URL或网络URL访问该网络应用。
第5步:创建一个新的文件夹,命名为 – 网络应用程序,将图像转换成草图。
第6步:将网络应用程序的代码粘贴在文件’app.py‘中并保存该文件。
最初在代码中,我们导入了所有需要的框架、包、库和模块,我们将利用它们来构建网络应用。此外,我们必须使用用户定义的函数,用于将图像转换成水彩素描和将图像转换成铅笔素描。还有一个函数是利用PIL库加载图像的。主函数中有网络应用的代码。最初,我们有一些标题和副标题来引导用户上传图片。为了上传图片,我们利用了streamlit的文件上传器。我们还提供了一个下拉菜单,让用户选择制作水彩素描/制作铅笔素描,然后根据他们的选择,我们渲染结果。原始图像和应用滤镜后的图像都是并排呈现的,这样用户就可以比较这两张图像的结果。最后,用户还可以将图像下载到他们的本地机器上。这可以通过利用Streamlit的下载按钮来完成。
- # import the frameworks, packages and libraries
- import streamlit as st
- from PIL import Image
- from io import BytesIO
- import numpy as np
- import cv2 # computer vision
-
- # function to convert an image to a
- # water color sketch
- def convertto_watercolorsketch(inp_img):
- img_1 = cv2.edgePreservingFilter(inp_img, flags=2, sigma_s=50, sigma_r=0.8)
- img_water_color = cv2.stylization(img_1, sigma_s=100, sigma_r=0.5)
- return(img_water_color)
-
- # function to convert an image to a pencil sketch
- def pencilsketch(inp_img):
- img_pencil_sketch, pencil_color_sketch = cv2.pencilSketch(
- inp_img, sigma_s=50, sigma_r=0.07, shade_factor=0.0825)
- return(img_pencil_sketch)
-
- # function to load an image
- def load_an_image(image):
- img = Image.open(image)
- return img
-
- # the main function which has the code for
- # the web application
- def main():
-
- # basic heading and titles
- st.title('WEB APPLICATION TO CONVERT IMAGE TO SKETCH')
- st.write("This is an application developed for converting\
- your ***image*** to a ***Water Color Sketch*** OR ***Pencil Sketch***")
- st.subheader("Please Upload your image")
-
- # image file uploader
- image_file = st.file_uploader("Upload Images", type=["png", "jpg", "jpeg"])
-
- # if the image is uploaded then execute these
- # lines of code
- if image_file is not None:
-
- # select box (drop down to choose between water
- # color / pencil sketch)
- option = st.selectbox('How would you like to convert the image',
- ('Convert to water color sketch',
- 'Convert to pencil sketch'))
- if option == 'Convert to water color sketch':
- image = Image.open(image_file)
- final_sketch = convertto_watercolorsketch(np.array(image))
- im_pil = Image.fromarray(final_sketch)
-
- # two columns to display the original image and the
- # image after applying water color sketching effect
- col1, col2 = st.columns(2)
- with col1:
- st.header("Original Image")
- st.image(load_an_image(image_file), width=250)
-
- with col2:
- st.header("Water Color Sketch")
- st.image(im_pil, width=250)
- buf = BytesIO()
- img = im_pil
- img.save(buf, format="JPEG")
- byte_im = buf.getvalue()
- st.download_button(
- label="Download image",
- data=byte_im,
- file_name="watercolorsketch.png",
- mime="image/png"
- )
-
- if option == 'Convert to pencil sketch':
- image = Image.open(image_file)
- final_sketch = pencilsketch(np.array(image))
- im_pil = Image.fromarray(final_sketch)
-
- # two columns to display the original image
- # and the image after applying
- # pencil sketching effect
- col1, col2 = st.columns(2)
- with col1:
- st.header("Original Image")
- st.image(load_an_image(image_file), width=250)
-
- with col2:
- st.header("Pencil Sketch")
- st.image(im_pil, width=250)
- buf = BytesIO()
- img = im_pil
- img.save(buf, format="JPEG")
- byte_im = buf.getvalue()
- st.download_button(
- label="Download image",
- data=byte_im,
- file_name="watercolorsketch.png",
- mime="image/png"
- )
-
-
- if __name__ == '__main__':
- main()
输出:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。