小编neo*_*bot的帖子

使用python urllib从url下载映像但接收HTTP错误403:禁止

我想使用python模块"urllib.request"从网址下载图像文件,该模块适用于某些网站(例如mangastream.com),但不适用于另一个(mangadoom.co)接收错误"HTTP错误403:禁止" .后一种情况可能会出现什么问题以及如何解决?

我在OSX上使用python3.4.

import urllib.request

# does not work
img_url = 'http://mangadoom.co/wp-content/manga/5170/886/005.png'
img_filename = 'my_img.png'
urllib.request.urlretrieve(img_url, img_filename)
Run Code Online (Sandbox Code Playgroud)

在错误消息的末尾,它说:

... 
HTTPError: HTTP Error 403: Forbidden
Run Code Online (Sandbox Code Playgroud)

但是,它适用于其他网站

# work
img_url = 'http://img.mangastream.com/cdn/manga/51/3140/006.png'
img_filename = 'my_img.png'
urllib.request.urlretrieve(img_url, img_filename)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下帖子中的解决方案,但它们都不适用于mangadoom.co.

通过urllib和python下载图片

如何在python中复制远程图像?

这里的解决方案也不合适,因为我的情况是下载图像. urllib2.HTTPError:HTTP错误403:禁止

非python解决方案也是受欢迎的.您的建议将非常感谢.

url image urllib download python-3.x

10
推荐指数
3
解决办法
2万
查看次数

为决策树中的每个数据点寻找对应的叶节点(scikit-learn)

我在 python 3.4 中使用 scikit-learn 包中的决策树分类器,我想为我的每个输入数据点获取相应的叶节点 ID。

例如,我的输入可能如下所示:

array([[ 5.1,  3.5,  1.4,  0.2],
       [ 4.9,  3. ,  1.4,  0.2],
       [ 4.7,  3.2,  1.3,  0.2]])
Run Code Online (Sandbox Code Playgroud)

假设对应的叶节点分别为 16、5 和 45。我希望我的输出是:

leaf_node_id = array([16, 5, 45])
Run Code Online (Sandbox Code Playgroud)

我已经通读了 scikit-learn 邮件列表和关于 SF 的相关问题,但我仍然无法让它工作。这是我在邮件列表中找到的一些提示,但仍然不起作用。

http://sourceforge.net/p/scikit-learn/mailman/message/31728624/

归根结底,我只想有一个函数 GetLeafNode(clf, X_valida) 使其输出是相应叶节点的列表。下面是重现我收到的错误的代码。因此,任何建议将不胜感激。

from sklearn.datasets import load_iris
from sklearn import tree

# load data and divide it to train and validation
iris = load_iris()

num_train = 100
X_train = iris.data[:num_train,:]
X_valida = iris.data[num_train:,:]

y_train = iris.target[:num_train]
y_valida = iris.target[num_train:]

# …
Run Code Online (Sandbox Code Playgroud)

python machine-learning decision-tree scikit-learn

5
推荐指数
2
解决办法
4227
查看次数

Pyspark 在 groupby 中创建字典

是否可以在 pyspark 中创建字典groupBy.agg()?这是一个玩具示例:

import pyspark
from pyspark.sql import Row
import pyspark.sql.functions as F

sc = pyspark.SparkContext()
spark = pyspark.sql.SparkSession(sc)

toy_data = spark.createDataFrame([
    Row(id=1, key='a', value="123"),
    Row(id=1, key='b', value="234"),
    Row(id=1, key='c', value="345"),
    Row(id=2, key='a', value="12"),
    Row(id=2, key='x', value="23"),
    Row(id=2, key='y', value="123")])

toy_data.show()

+---+---+-----+
| id|key|value|
+---+---+-----+
|  1|  a|  123|
|  1|  b|  234|
|  1|  c|  345|
|  2|  a|   12|
|  2|  x|   23|
|  2|  y|  123|
+---+---+-----+
Run Code Online (Sandbox Code Playgroud)

这是预期的输出

---+------------------------------------
id |  key_value
---+------------------------------------ …
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

3
推荐指数
1
解决办法
3710
查看次数

如何在pyspark中动态聚合列

pct_<original_name>_valid我想计算每个输入列的非缺失值的百分比。在此示例中只有 2 列,因此可以轻松手动编写下面的代码。但是当有 30 多个列时,我不想手动执行此操作。甚至可以动态地执行此操作吗?(例如,将列名称列表作为输入)

import pyspark.sql.functions as F

d = [{'name': 'Alice', 'age': 1}, {'name': 'Bae', 'age': None}]
df = spark.createDataFrame(d)

df.withColumn('name_valid', F.when(col("name").isNotNull(),1).otherwise(0))\
.withColumn('age_valid', F.when(col("age").isNotNull(),1).otherwise(0))\
.agg(
    (100.0*F.sum(col("name_valid"))/F.count(F.lit(1))).alias("pct_name_valid"),
    (100.0*F.sum(col("age_valid"))/F.count(F.lit(1))).alias("pct_age_valid")
)\
.show()
Run Code Online (Sandbox Code Playgroud)

结果如下:

+--------------+-------------+
|pct_name_valid|pct_age_valid|
+--------------+-------------+
|         100.0|         50.0|
+--------------+-------------+
Run Code Online (Sandbox Code Playgroud)

如前所述,我不想对所有 30 多个列手动执行此操作。有什么办法我可以这样做:

my_output = calculate_non_missing_percentage(df, my_columns = ["name", "age", "gender", "school", "color"])
Run Code Online (Sandbox Code Playgroud)

aggregate-functions pyspark

0
推荐指数
1
解决办法
3359
查看次数